VB.NET 使用 windows 默认 ODBC JET 驱动程序连接到 MDB 文件

VB.NET to connec to MDB file using windows default ODBC JET driver

我正在使用 VB.NET 6.0.5、Visual Basic 和 Visual Studio Community 2022 构建 Windows Winforms 桌面应用程序。

我曾经使用 Microsoft Access 数据库引擎连接到 ACCDB 文件。

它在开发机器上运行良好,但是当我尝试部署到 Windows 10 x64 机器的全新安装时;我必须让安装程序下载并安装 ACE 引擎。

我想尽可能地减少先决条件,因为最终用户已经必须下载并安装 .NET 6 Runtime。

我发现 Windows 的所有版本都默认带有 Microsoft Access Driver (*.mdb),我想使用它。

驱动位置是:C:\Windows\SysWOW64\odbcad32.exe

我认为如果有人安装了 Office,它可能会将驱动程序更新到不同的 Jet.OLEDB 版本。

所以我的问题是:

如何查看当前Jet.OLEDB驱动程序版本以及连接字符串是什么?

我当前的连接字符串是:

Dim cStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database.mdb;User ID=Admin;Password=123;"

但仍然显示 Microsoft.Jet.OLEDB.4.0 提供商未注册.

我知道 ACE 引擎和 ACCDB 工作得更好,但我使用 JET 和 MDB 就足够了。

请帮忙!

谢谢

更新:2022 年 5 月 20 日

我尝试但没有成功的事情:

好吧,如果您想知道连接字符串应该是什么? 让 VS 为您打造。

(您不想手动编写代码,也不想输入连接字符串 - 而且您不必这样做)。

因此,在设置您的 VS 项目时,请在此处:

所以,让我们点击 [...] 并使用 JET(而不是 ACE)建立连接。

但是,您的 issue/problem 现在 vs2022 是 x64 位的(第一个版本就是这样)。

我是 运行2019 年,所以它仍然会测试和验证 x32 位连接。我怀疑 vs2022 不会通过“测试”按钮,但您仍然可以使用它来构建连接。

所以,在上面,我们启动了连接向导,- 点击默认 sql 服务器的更改,我们现在有这个选择:

好的,我们选择了 Access,但是 JET 与 ACE 相比呢?

嗯,点击高级——这个:

现在我们可以(开始)选择提供商。

这个:

那么,你可以选择jet或者ACE。

选择jet,那么我们现在回到这里:

现在因为我是 运行ning vs2019,所以我的测试连接将会工作!!! - 对你来说,它可能不会。因此,为您准备的测试连接按钮 - 您可以尝试一下,但即使它给出失败消息,您的连接仍然正常。

这个:

好的,至此,我们完成了。

我们现在在代码中可以在我们的代码中使用上面的连接。像这样说:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

    Using conn As New OleDbConnection(My.Settings.TestJET)
        Using cmdSQL As New OleDbCommand("SELECT * FROM tblHotels", conn)

            conn.Open()
            Dim rstData As New DataTable
            rstData.Load(cmdSQL.ExecuteReader)

            Dim strMSG As String =
                "There are " & rstData.Rows.Count & " Hotels in the database " & vbCrLf &
                "The first Hotel is " & rstData.Rows(0).Item("HotelName")

            MsgBox(strMSG, MsgBoxStyle.Information, "Table info")

        End Using
    End Using

End Sub

我们得到这个:

现在,我想我可以查看连接字符串 - 但我从来没有真正这样做过 - 我总是让系统为我构建它。

我明白了:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test\Rides_be.mdb

如您所述,确保您的项目设置为 x32。但是,既然你 运行 宁 vs2022,那么连接构建器应该工作,但你必须 运行 你的项目来测试该连接,我不认为在 vs2022 中,你可以使用“测试”连接.

另一方面,由于大多数办公室(甚至 Access ACE 是 x64 位?)。然后,如果您使用 x64 位 ACE 建立连接,那么您的测试连接按钮应该可以使用。