VB.net - 收到错误"试图读取或写入受保护的内存..."由于提供商已更改



这是我在这里的第一篇文章,所以如果缺少一些有用的信息,请告诉我,以帮助解决我的问题。

是这样的:

我有一个使用 Access 数据库 (.mdb( 的 VB.net 应用程序,该应用程序多年来一直正常工作。 由于我现在使用的是 64 位的 Access 数据库引擎 2016,因此我已将数据库连接提供程序从 Microsoft.Jet.OLEDB.4.0(仅在 32 位中可用(更改为 Microsoft.ACE.OLEDB.12.0。我还取消选中了应用程序的属性"首选 32 位"(翻译自我的法语版 Visual Studio(。

由于我进行了这些更改(并且仅进行了这些更改(,因此我经常收到以下错误:

系统.访问违规异常:"试图读取或写入 受保护的内存。这通常表明其他内存 腐败。

它(随机(出现在软件的不同部分,总是在myConnection.Open((

Dim myConnection As OleDbConnection = New OleDbConnection(S7ConnString)
Try
myConnection.Open()
...

我开始遇到此问题的第一个新连接字符串是:

Public S7ConnString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBPath & ";Jet OLEDB:Database Password=***;"   

(其中 DBPath 是访问.mdb文件路径的字符串(

经过一些搜索,我读到添加OLE DB 服务=-1可以解决这个问题。它确实大大提高了数据库进程的速度,但并没有解决问题。

你有什么想法来解决这个问题吗?

谢谢你和亲切的问候。

我已经卸载了 Access 数据库引擎 2016 并安装了 2010 64 位版本,现在它似乎可以正常工作。

@Jimi,感谢您的建议,这些建议帮助我解决了这个问题。我没有想到"Microsoft.ACE.OLEDB.12.0"提供程序与MS Access Database Engine 2016不兼容!

最新更新