当前数据库连接失败提示用户浏览数据库连接

prompt for users to browse database connection if current database connection fails

我正在 vb.net 中构建一个数据输入程序,供 5 个人共享使用,但我在设置正确的数据库连接时遇到了问题。它会做一些基本的事情,比如:提取库存单位、保存工作、加载工作操作。

我使用的数据库是Access数据库(.mdb)。该数据库将位于本地服务器驱动器中(我的在 Z 驱动器中)并且连接字符串如下所示

Provider=Microsoft.Jet.OLEDB.4.0;Data Source="Z:\Jimmy's Files\Quality Enclosures.mdb"

这在我的电脑上工作正常,但问题是它在我同事的电脑上不起作用。

d (\dc-qenclosures) (Z:) 是我本地服务器驱动器的位置,但在我同事的计算机上,它设置为 d (\dc-qenclosures) (Q:).

所以,每当我在我同事的电脑上打开这个程序时,它都会给我一个错误,说数据库 Provider=Microsoft.Jet.OLEDB.4.0;Data Source="Z:\Jimmy's Files\Quality Enclosures.mdb" 不存在(这是有道理的,因为它不在 Z: 在他的电脑上)

我知道如何使用 OpenFileDialog 浏览 mbd 文件..但我如何将其设置为新的数据库连接? 我想创建一个属性菜单来设置数据库位置。

这是我目前浏览数据库文件的代码

Private Sub RadButton6_Click(sender As Object, e As EventArgs) Handles RadButton6.Click

    Dim myStream As Stream = Nothing
    Dim openFileDialog1 As New OpenFileDialog()

    openFileDialog1.InitialDirectory = "c:\"
    openFileDialog1.Filter = "mdb files (*.mdb)|*.mdb|All files (*.*)|*.*"
    openFileDialog1.FilterIndex = 1
    openFileDialog1.RestoreDirectory = True

    If openFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
        Try
            myStream = openFileDialog1.OpenFile()
            If (myStream IsNot Nothing) Then
                myConString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & openFileDialog1.FileName
                con.ConnectionString = myConString
                con.Open()
            End If
        Catch Ex As Exception
            MessageBox.Show("Cannot read file from disk. Original error: " & Ex.Message)
        Finally
            ' Check this again, since we need to make sure we didn't throw an exception on open. 

            If (myStream IsNot Nothing) Then
                myStream.Close()
            End If
        End Try
    End If
End Sub

我赞同@OneFineDay 的建议,即先尝试 UNC 路径,但要回答浏览和保存数据库路径的主要问题,您可能需要查看将连接字符串的元素存储在 My.Settings,因此您可以将路径设置为用户级设置。这里有一篇带有示例的 MSDN 文章: Using My.Settings in Visual Basic 2005

简而言之,您将共享的代码示例将值保存到 My.Settings.DataPath(或您决定调用该设置的任何内容)。然后,当您连接到数据库并需要连接字符串时,您可以从 My.Settings.DataPath.

中读取它

当然,默认情况下,这会将您的数据库路径存储在纯文本 app.config 文件中,因此您需要注意这一点,并在有任何安全措施时采取适当的措施对您的应用程序或数据库的担忧。