【问题标题】:'The Microsoft Access database engine cannot open or write to the file' error when opening access database from VB.net从 VB.net 打开 access 数据库时出现“Microsoft Access 数据库引擎无法打开或写入文件”错误
【发布时间】:2021-11-12 17:46:23
【问题描述】:

因此,每当我尝试通过 VB.net 将一些数据写入我的数据库之一时,我都会收到此错误消息,说明这是因为数据库已打开或未授予我写入或读取数据库的权限。

我已确保将权限授予“每个人”进行读写,并且也没有打开数据库。但错误仍然显示。做了一些研究后,它说我应该将我的数据库移到我已经存在的本地服务器上。

运行程序时,最后一行出现错误:

provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
        datafile = "C:\Users\Hamza\Desktop\POS_database"
        connstring = provider & datafile
        myconnection.connectionstring = connstring
        myconnection.Open()

还有其他方法可以解决这个问题吗?

【问题讨论】:

  • 使用编辑链接将发生错误的代码添加到您的问题中。
  • @Mary 刚刚完成。
  • 我在您的示例代码中没有看到文件扩展名?您需要完整的路径名和文件名。
  • 您的连接字符串错误。见connectionstrings.com/access
  • 一开始就不要建立这样的连接字符串。使用连接字符串生成器 - 在您的情况下是 OleDbConnectionStringBuilder。这样你就不会做一些愚蠢的事情,比如将 Data Source 属性的一半放在名为 provider 的变量中。

标签: database vb.net ms-access error-handling


【解决方案1】:

按照 cmets 中的建议,您的数据文件名中缺少文件扩展名。如果您使用的是 ACE,那么它大概是一个 ACCDB 文件。您应该使用连接字符串生成器和正确的文件路径:

Dim builder As New OleDbConnectionStringBuilder With
               {
                   .Provider = "Microsoft.ACE.OLEDB.12.0",
                   .DataSource = "C:\Users\Hamza\Desktop\POS_database.accdb"
               }

Using connection As New OleDbConnection(builder.ConnectionString)
    connection.Open()

    'Use connection here.
End Using

另外,如果文件在当前用户的桌面上,那么你不应该这样硬编码路径:

.DataSource = Path.Combine(My.Computer.FileSystem.SpecialDirectories.Desktop, "POS_database.accdb")

【讨论】:

  • 您好,感谢您的建议和帮助。我按照你的建议做了,但现在每次我运行程序时它都会说找不到文件。这就是我所说的:.Provider = "Microsoft.ACE.OLEDB.12.0", .DataSource = "C:\Users\Hamza\Documents.accdb"
  • @HamzaAsim,您的个人文件夹中是否真的有一个名为“Documents.accdb”的文件,或者您的“Documents”文件夹中是否有其他名称的文件?
  • 是的,你是对的,我重新检查并输入了正确的文件路径。但是现在当我运行程序时,我得到的错误是:'列'CustID'不允许空值。'即使我的数据库中的字段甚至没有设置为“不接受 null”。抱歉,希望您能对此有所帮助。
  • @HamzaAsim,如果您收到该错误消息,那么您已经能够成功连接到数据库,因此您在此处提出的问题已得到解答。如果您现在有其他问题,则需要单独发布该问题,并附上该问题的所有特定信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多