使用VB.Net
数据库表单
Server Name, Username, Password - textbox
SQL Authentication, windows Authentication - checkbox
我有数据库表单,第一次运行我的软件,我必须提供服务器名称,窗口或SQL身份验证模式,用户名和密码。下次我运行软件时,给定的数据如服务器名称,用户名,密码,窗口或sql身份验证应该出现在表单中。
在我使用VB6之前,我使用ini文件获取用户名,密码和服务器名。
vb6代码。
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中使用相同的格式(ini文件)
需要vb.net代码帮助。
答案 0 :(得分:2)
这些说明假定VB2008,但我相信2010年是类似的。
正如@treaschf所说,在解决方案资源管理器中右键单击您的项目并选择属性。如果弹出一个标题为“解决方案”...“属性页”的窗口,则单击解决方案而不是项目。在属性窗口中,单击“设置”。在名称列中输入“用户名”,将类型保留为String,将范围保留为User,将值保留为空(除非您要输入默认值)。对要存储的每个属性重复此操作。这些步骤会自动创建您可以使用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。我删除了System.Security.SecureString,因为它很好,它也使生活更复杂。将Entropy的值更改为您想要的任何值,调用Encrypt(string)来加密您的文本,并调用Decrypt(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)
答案 1 :(得分:0)
如果在解决方案资源管理器中右键单击项目,然后选择“属性”,则会在“属性”页面上显示“设置”选项卡,您可以在其中定义应用程序的设置。
这些设置将存储在XML文件中,靠近应用程序的可执行文件。 (或者在用户设置的情况下,在C:\ Users \ 用户名 ...目录中。
如果您将连接字符串设置命名为DbConnectionString
,则可以从以下代码访问它:
My.Settings.DbConnectionString
但是,如果您需要存储用户名和密码,我建议您将设置存储在Windows注册表中,并使用System.Security.Cryptography.ProtectedData
类对其进行加密。 (不建议存储未加密的密码。)