这是我的第一篇文章,因此,如果缺少一些有用的信息来帮助解决我的问题,请告诉我。
这里:
我有一个使用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应用程序,...