在vb.net设计器生成的系统中在运行时设置MS Access密码

时间:2018-04-30 05:47:17

标签: vb.net ms-access configuration database-connection

我正在为志愿者组织的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

2 个答案:

答案 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