VB.net-由于提供者已更改,出现错误“试图读取或写入受保护的内存…”

问题描述 投票:-1回答:1

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

这里:

我有一个使用Access数据库(.mdb)的VB.net应用程序,该应用程序可以正常使用多年。因为我现在使用的是64位的Access Database Engine 2016,所以我将数据库连接提供程序从Microsoft.Jet.OLEDB.4.0(仅32位可用)更改为Microsoft.ACE.OLEDB.12.0。我还没有选中我的应用程序的属性“首选32位”(翻译自法语版本的Visual Studio)。

由于我做了这些更改(并且只有它们),所以我经常收到以下错误:

System.AccessViolationException:'尝试读取或写入受保护的内存。这通常表明其他内存正在损坏。

它(随机地)出现在软件的不同部分中,总是在行[[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是Access .mdb文件路径的字符串)

经过一些搜索后,我读到添加

OLE DB Services = -1

可以解决问题。它确实极大地提高了DB进程的速度,但并没有解决问题。
您有解决这个问题的想法吗?

谢谢您和我的亲切问候。

这是我的第一篇文章,因此,请指出是否缺少一些有用的信息来帮助解决我的问题。就是这样:我有一个使用Access数据库(.mdb)的VB.net应用程序,...

vb.net ms-access access-violation provider jet
1个回答
0
投票
我已经卸载了Access Database Engine 2016并安装了2010 64位版本,现在看来它可以正常工作。
© www.soinside.com 2019 - 2024. All rights reserved.