连接ms access数据库时出现连接错误

发布于 2024-10-15 14:14:31 字数 585 浏览 1 评论 0原文

我想通过 Windows Server 2008 R2 标准的 ado.net 连接 c# 中的 ms access 数据库。

using System.Data.OleDb;

OleDbConnection connectionAccess = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\testTable.mdb");
OleDbDataAdapter adapterAccess = new OleDbDataAdapter("Select * from test", connectionAccess);
DataSet ds = new DataSet();
adapterAccess.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];

但它给出了一个错误:

The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.

你有什么建议以及为什么会出现这个错误。 如果没有注册的话如何注册。

提前致谢

I want to connect the ms access database in c# through ado.net at windows server 2008 R2 standard.

using System.Data.OleDb;

OleDbConnection connectionAccess = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\testTable.mdb");
OleDbDataAdapter adapterAccess = new OleDbDataAdapter("Select * from test", connectionAccess);
DataSet ds = new DataSet();
adapterAccess.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];

But it gives an error:

The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.

Have you any suggestion and why this error is coming.
If it is not registered then how to register this.

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

挽手叙旧 2024-10-22 14:14:31

问题可能出在平台上。 Jet OLEDB 仅支持 x86(32 位操作系统),不支持 x64 64(位)。没有 64 位版本的 jet,这就是您收到该错误的原因。

要强制您的应用程序使用 32 位,请在 Visual Studio 的高级编译器选项中将目标 cpu 更改为 x86。

MSDN 上有类似问题可能有帮助。

也可以尝试自己手动注册 DLL。
对于 Jet 4.0,dll 的路径是:

Microsoft Jet 4.0 OLE DB Provider
Provider=Microsoft.Jet.OLEDB.4.0
C:\WINNT\System32\Msjetoledb40.dll
C:\WINNT\System32\Msjet40.dll
C:\WINNT\System32\Mswstr10.dll
C:\WINNT\System32\Msjter40.dll
C:\WINNT\System32\Msjint40.dll

在命令提示符下使用 regsvr32 注册 dll,如下所示:

regsvr32 C:\WINNT\System32\Msjetoledb40.dll

The problem might be of the Platform. The Jet OLEDB only supports x86 (32 bit OS) and not x64 64 (bit). There is not a 64 bit version of jet that is why you get that error.

To force your app to use the 32 bit change the target cpu to x86 in the advanced compiler options in visual studio.

This similar question on MSDN may help.

Also try manually registering the DLL yourself.
For your Jet 4.0 the path of dlls are:

Microsoft Jet 4.0 OLE DB Provider
Provider=Microsoft.Jet.OLEDB.4.0
C:\WINNT\System32\Msjetoledb40.dll
C:\WINNT\System32\Msjet40.dll
C:\WINNT\System32\Mswstr10.dll
C:\WINNT\System32\Msjter40.dll
C:\WINNT\System32\Msjint40.dll

register the dll by using regsvr32 like this on command prompt:

regsvr32 C:\WINNT\System32\Msjetoledb40.dll
我爱人 2024-10-22 14:14:31

这可能是由于 Windows 用户安全设置问题,请检查路径权限等。

This could be because of a windows user seucrity setting issue,check the rights over the path etc.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文