这是我在这里的第一篇文章,所以如果缺少一些有用的信息,请告诉我,以帮助解决我的问题。
是这样的:
我有一个使用 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不兼容!