2009-12-16 132 views
0

使用VB.Net如何保存輸入值?

數據庫表單

Server Name, Username, Password - textbox 
SQL Authentication, windows Authentication - checkbox 

我有數據庫的形式,我第一次運行我的軟件,我得給服務器名稱,窗口或SQL身份驗證模式,用戶名和密碼。下一次我運行該軟件,給定的數據如服務器名稱,用戶名,密碼,窗口或SQL身份驗證應該出現在窗體中。

在使用VB6之前,我使用ini文件獲取用戶名,密碼和servername。

vb6 code。

Dim File As String, OFLen As Double, str As String 
File = App.Path & "\SQLServer.ini" 
OFLen = FileLen(File) 
SName = ReadIni(File, "Server", "ServerName") 
UName = ReadIni(File, "UserName", "UName") 
PWord = ReadIni(File, "Password", "PWord") 

Dim ConnectionString As String 
Set DLTConn = New ADODB.Connection 
ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI; Persist Security Info=False;Initial Catalog=database1;Data Source=" & SName & "" 
DLTConn.Open ConnectionString 

有任何選項在vb.net可用於保存數據的,或者有在vb.net

需要vb.net代碼幫助使用相同的格式(INI文件)。

回答

2

這些指令假設VB2008但我相信2010年是相似的。

正如@treaschf所說,在解決方案資源管理器中右鍵單擊您的項目並選擇屬性。如果一個窗口彈出一個標題爲「解決方案」......「屬性頁面」,那麼你點擊瞭解決方案而不是項目。在屬性窗口中點擊設置。在名稱欄中輸入「用戶名」,將類型保留爲字符串,範圍爲用戶,值爲空(除非要輸入默認值)。對您要存儲的每個屬性重複此操作。這些步驟自動創建,您可以訪問使用My.Settings變量..

所以代碼隱藏,你可以這樣做:

My.Settings.Username = "bob" 

和:

Dim username as String = My.Settings.Username 

我認爲,設置將在退出時自動保存,但我建議在更新後進行明確的調用以防萬一。

My.Settings.Save() 

因此,這幾乎和你的INI文件一樣。但是像@treaschf說的那樣,你應該在保存到磁盤時加密密碼。下面是這裏找到的例程的修改版本。 http://weblogs.asp.net/jgalloway/archive/2008/04/13/encrypting-passwords-in-a-net-app-config-file.aspx。我刪除了系統。Security.SecureString,因爲它同樣好,這也使得生活更加複雜。將Entropy的值更改爲任何您想要的值,調用Encrypt(string)來加密文本並解密(string)以解密它。這使用DPAPI,因此您不必擔心與註冊表,權限和其他一切有關的問題。

Private Shared entropy As Byte() = System.Text.Encoding.Unicode.GetBytes("Enter some text here for entropy") 
Public Shared Function EncryptString(ByVal text As String) As String 
    Dim data = System.Security.Cryptography.ProtectedData.Protect(System.Text.Encoding.Unicode.GetBytes(text), _ 
                    entropy, _ 
                    System.Security.Cryptography.DataProtectionScope.CurrentUser) 
    Return System.Convert.ToBase64String(data) 
End Function 
Public Shared Function DecryptString(ByVal encryptedData As String) As String 
    Dim data As Byte() = System.Security.Cryptography.ProtectedData.Unprotect(System.Convert.FromBase64String(encryptedData), _ 
                        entropy, _ 
                        System.Security.Cryptography.DataProtectionScope.CurrentUser) 
    Return System.Text.Encoding.Unicode.GetString(data) 
End Function 

然後把它們放在一起:

 My.Settings.Username = EncryptString("bob") 

    Dim username As String 
    If Not String.IsNullOrEmpty(My.Settings.Username) Then 
     Try 
      username = DecryptString(My.Settings.Username) 
     Catch ex As Exception 
      'There was a problem decrypting the username 
     End Try 
    End If 

    Trace.WriteLine(username) 
+0

應該提到您需要添加對System.Security的引用 – 2009-12-16 16:44:46

0

如果您在解決方案資源管理器中右鍵單擊您的項目並選擇屬性,在屬性頁面上會出現一個設置選項卡,您可以在其中定義應用程序的設置。

這些設置將存儲在XML文件中,靠近應用程序的可執行文件。 (或者在用戶設置,在C情況下:\用戶\用戶名...目錄

如果你命名你的連接字符串設定爲DbConnectionString,你就可以從代碼中訪問它是這樣的:

My.Settings.DbConnectionString 

但是如果你需要存儲的用戶名和密碼,我建議你存儲在Windows註冊表中的設置,並將它們與System.Security.Cryptography.ProtectedData級加密(存放未加密的密碼,不推薦。)

+0

是新的vb.net,你能舉個例子PLZ – Gopal 2009-12-16 11:23:22

+0

您可以用Microsoft.Win32.Registry類訪問註冊表。我相信你可以在MSDN庫中找到一些使用它的例子。 (我不用VB編程,我只知道一些.Net框架類。) – treaschf 2009-12-16 11:32:31