首页 > 解决方案 > 在连接字符串中使用变量作为数据库名称的一部分,因此不必为每个用户进行硬编码

问题描述

我的程序在我的计算机上使用名为 (County Hunter - K8EMS.mdb) 的数据库。我想要做的是使用用户可以在他们的屏幕上输入的变量并选择数据库以在他们的计算机上搜索(County Hunter - “Variable”.mdb)。因为每个用户都有不同的调用变量将去哪里。

这个数据库是由县猎人使用的另一个程序创建的,我要做的就是在这个数据库中搜索一个表,看看一个字段是否为 NULL 或已使用。我在屏幕上有一个输入文本框,因此他们可以输入他们的呼叫并希望使用该输入来完成命名要搜索的数据库,因此不需要为每个用户进行硬编码和编译。

我在 Microsoft Visual Studio 17 中使用 Visual Basic。

     Dim conn As OleDbConnection
     Dim ds As New DataSet
     Dim dt As New DataTable
     ds.Tables.Add(dt)
     Dim da As New OleDbDataAdapter
     Dim connString = "(Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Logger Data\County Hunter -  " ' & mcall.text &'""' &.mdb&'"Jet OLEDB:Database.[County Hunter- (mcall,text.mdb) Password = ########;)"

MDB 是旧的 Access 数据库,因为安装数据库的程序是在 VB6 中。连接字符串显示错误,但我对 Access 还很陌生,我需要一些关于如何完成这项工作的指导。

可变输入画面

任何想法或帮助将不胜感激。

标签: databasevb.netdatabase-connectionconnection-stringoledb

解决方案


你可以每次都这样做,但这会很麻烦。你不能把它放在数据库中,因为那是你要定位的……我建议把它放在配置文件中。

Dim  config = ConfigurationManager.OpenExeConfiguration(Assembly.GetEntryAssembly().Location)

Dim appSettings = CType(config.GetSection("appSettings"), AppSettingsSection)
Dim insensitive = StringComparison.CurrentCultureIgnoreCase

If (Not appSettings.AllKeys.Any(Function(key)
        string.Compare(key, "name", insensitive) = 0)) Then
    appSettings.Settings.Add("name", "bar")

    config.Save()
End If

推荐阅读