【发布时间】:2019-12-19 01:09:02
【问题描述】:
我的代码产生了这个错误:
System.AccessViolationException: '试图读或写保护 记忆。这通常表明其他内存已损坏。
这发生在My_CONNECTION.Open() 行。
知道如何解决这个问题吗?
我的代码:
vb.net
Dim My_USER As String = Environment.UserName
Dim My_CONNECTION As New OleDbConnection
Dim My_DATABASE As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\" & My_USER & "\AppData\Roaming\MYAPP\MYDTB.accdb;Persist Security Info=False;"
Dim My_COMMAND As New OleDbCommand
Dim My_READER As OleDbDataReader
Dim My_COUNT As Integer
'### Open connection ###
My_CONNECTION.ConnectionString = My_DATABASE
My_CONNECTION.Open()
'### SQL ###
With My_COMMAND
.CommandText = "SELECT COUNT(*) FROM MYDTB"
.CommandType = CommandType.Text
.Connection = My_CONNECTION
End With
My_COUNT = My_COMMAND.ExecuteScalar()
'### Close connection ###
My_CONNECTION.Close()
【问题讨论】:
-
有什么方法可以检查 dtb 是否正在使用另一个进程?
-
尝试将所有代码放入 Try Catch 块中。查看 InnerException,如果有的话。您可以尝试的另一件事是将数据库移动到另一个文件夹。
-
请开启 Option Strict。这是一个两部分的过程。首先对于当前项目 - 在解决方案资源管理器中双击我的项目。选择左侧的编译。在 Option Strict 下拉列表中选择 ON。未来项目的第二个 - 转到工具菜单 -> 选项 -> 项目和解决方案 -> VB 默认值。在 Option Strict 下拉列表中选择 ON。这将使您避免在运行时出现错误。
-
你的表名MYDTB和数据库的文件名一样吗?
-
这是为了公共帮助而改变的 :-)
标签: .net vb.net ms-access oledb