【问题标题】:New C# project cannot open ACCDB microsoft database file新建 C# 项目无法打开 ACCDB microsoft 数据库文件
【发布时间】:2019-02-04 03:04:52
【问题描述】:

我最近有一个新项目分配给我(我是 C# 新手,而且我是大三学生)。它使用 Microsoft 访问数据库文件(.accdb 文件)

我已将项目导入 Visual Studio,但我无法终生运行代码。最初我遇到了文件注册问题,我想我设法通过让 IT 团队从 Microsoft 网站安装“2007 Office System Driver: Data Connectivity Components”驱动程序来解决这个问题。

鞠躬错误说:

System.Data.OleDb.OleDbExceptions: 'Cannot open database''. It may not be a database that your application recognizes, or the file may be corrupt.'

我要帮助的团队只有一名开发人员(在不同国家工作),他是处理代码的主要人员。这对她有用,但她并没有经验来帮助我解决这个问题。

我尝试将我的数据库文件发送给她,让她将她的文件换成我的,她说它仍在工作,所以听起来问题可能与文件无关?

如果可能的话,我能得到任何帮助吗?到目前为止,我唯一的方法是继续搜索错误。

但我看到的唯一解决方案来自数据库文件接近文件大小限制 (2GB) 的人。我的数据库文件只有 1MB。

数据库文件受密码保护(密码恰好在代码中)。我打开了数据库文件(Microsoft 访问打开)并输入了密码,访问数据没有问题)

【问题讨论】:

  • 打开文件的代码是什么?
  • 请不要在未发布代码的情况下询问有关代码的问题。您的同事是否使用相同的代码?这是连接到 ACCDB stackoverflow.com/questions/33642446/… 的代码示例,您看起来像这样吗?它有类似的连接字符串吗?特别是Provider=Microsoft.ACE.OLEDB.12.0。您可能需要安装 ACE 驱动程序。
  • 解决编码问题通常只是在您更具体地隔离问题之前解决问题。所以我建议首先尝试连接到一个空白的 ACCDB - 这行得通吗?如果是这样,接下来要做的就是尝试从 ACCDB 中删除密码并尝试。如果不是,那么它与您的特定 ACCDB 没有任何关系
  • 你的连接字符串是什么?
  • 我最初安装的ace驱动。问题确实与数据库文件有关。我创建了一个新的并导入了所有内容,现在似乎可以正常工作了

标签: c# database oledb oledbexception


【解决方案1】:

幸运的是,我设法找到了合适的文章来帮助我!

我相信 Microsoft 访问数据库文件的问题在于,当时只有一个用户可以真正使用。

我看到一个关于其他用户可能使用的锁的论坛。我用谷歌搜索了如何删除锁,但似乎它可能不是锁问题(微软创建了一个我没有的锁文件)。

无论如何,我认为问题仍然有些相似。由于我可以访问 Microsoft Access 中的数据库,因此我决定打开一个新数据库,然后转到外部数据选项卡并单击访问以从其他文件中导入所有内容。然后我只是重命名为旧文件,并给我的新文件原名。

我重新运行了代码,它成功了!

我不知道为什么其他开发人员打开文件没有问题。我的假设是,因为她是唯一的开发人员,她的笔记本电脑已经以某种方式“设置”以正常运行一切,而如果有人新尝试(或者如果发生某些事情,她必须在新笔记本电脑上重新打开代码) 他们将不得不尝试复制“设置”或尝试从头开始工作

希望对你有帮助

【讨论】:

  • 我不知道为什么人们不得不给你投反对票!我今天遇到了这个问题,我重新创建了数据库——它成功了!非常感谢!
猜你喜欢
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多