我正在为志愿者组织的MS Access数据库开发一个VB.NET更新系统。数据库受密码保护,因为它包含个人信息。我使用VB设计器创建了应用程序。我需要能够编写应用程序代码,以便,如果所有者决定更改MS Access密码,他们将无需再回复我更改代码并重新构建解决方案。换句话说,我不希望密码在app.config文件或settings.designer.vb文件中进行硬编码。我的代码不需要知道密码,因为对其中一个Fill函数的简单调用可以测试用户输入的任何密码。我的问题是,无论何时访问数据库,我都没有办法改变在setttings.designer.vb代码中测试的连接字符串。我正在使用Visual Studio 2017。
我花了很长时间在网上搜索答案,并尝试了各种涉及配置管理器的解决方案但没有成功。我是这个领域的新手,所以如果有人在这里帮忙,我将非常感激。
这是我的最新尝试,即使第三个调试语句表明连接字符串(包括密码)已正确设置,仍然会产生无效的密码错误。
Public Sub UpdateConnString(connString As String)
Dim configFileMap As New ExeConfigurationFileMap()
Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(configFileMap.ExeConfigFilename)
Dim connStringName As String = "TestConnectionString"
Debug.Print("0 " + config.ConnectionStrings.ConnectionStrings(connStringName).ConnectionString)
config.ConnectionStrings.ConnectionStrings(connStringName).ConnectionString = connString
Debug.Print("1 " + config.ConnectionStrings.ConnectionStrings(connStringName).ConnectionString)
config.Save(ConfigurationSaveMode.Modified, True)
Debug.Print("2 " + config.ConnectionStrings.ConnectionStrings(connStringName).ConnectionString)
End Sub
答案 0 :(得分:0)
仅仅因为连接字符串存储在配置文件中,您不需要按原样使用它。您可以读取该默认值,然后在使用之前对其进行编辑,例如
Dim builder As New OleDbConnectionStringBuilder(My.Settings.DefaultConnectionString)
builder.DataSource = dataSource
Dim connectionString = builder.ConnectionString
您可以在运行时添加或修改您想要的连接字符串的任何部分。
答案 1 :(得分:0)
感谢您的回复。不幸的是,代码抛出了编译错误 - " DefaultConnectionString不是My.Settings"的成员。
Fortunatley我现在设法找到了一个可行的解决方案:
'My.Settings.Item("TestConnectionString") = connectionString