[英]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 Database Engine连接到 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 Provider is not registered 。
我知道 ACE Engine 和 ACCDB 工作得更好,但对我来说使用 JET 和 MDB 就足够了。
请帮忙!
谢谢
更新:20/5/2022
我尝试过但没有成功的事情:
Jet.OLEDB
不支持x64 。Provider=Microsoft.Jet.OLEDB.10.0
。好吧,如果您想知道连接字符串应该是什么? 让 VS 为您构建它。
(无论如何,您都不想提交代码或输入连接字符串 - 而且您不必这样做)。
因此,在为您的 VS 项目设置时,请在此处:
所以,让我们点击那个 [...] 并使用 JET(而不是 ACE)建立连接。
但是,您的问题/问题是 NOW vs2022 是 x64 位(第一个版本就是这样)。
我正在运行 2019 年,因此它仍将测试和验证 x32 位连接。 我怀疑 vs2022 不会通过“测试”按钮,但您仍然可以使用它来构建连接。
因此,在上面,我们启动了连接向导, - 为默认的 sql 服务器点击更改,我们现在有这个选择:
好的,我们选择了 Access,但是 JET 与 ACE 呢?
好吧,点击高级 - 这个:
现在我们可以(开始)选择提供商。
这个:
所以,你可以选择jet或ACE。
选择jet,那么我们现在回到这里:
现在因为我正在运行 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 建立连接,那么您的测试连接按钮应该可以工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.