MS Access/accdb“无法打开数据库”错误(C#)

Posted

技术标签:

【中文标题】MS Access/accdb“无法打开数据库”错误(C#)【英文标题】:MS Access/accdb "Cannot open database" error (C#) 【发布时间】:2013-12-23 22:22:03 【问题描述】:

我正在使用 MS Access 数据库来存储桌面应用程序的数据。本周我被要求向其他一些用户授予对该应用程序的访问权限,但每当他们启动该应用程序时,都会收到错误消息:

无法打开数据库''。它可能不是您的应用程序识别的数据库,或者文件可能已损坏。

我浏览了 5 页 Google 搜索结果,试图找到解决方案,但一无所获。对于这个问题,我能找到的每一个答案要么是 2GB 限制(我的数据库远不及此),要么是损坏(情况并非如此,因为只有两个新用户收到此错误,其他人都很好)。

这是我的连接字符串:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=[Path];Jet OLEDB:Database Password=[Password];"

我很确定这是由于用户的机器丢失了某些东西,但我不知道他们可以从什么地方或从哪里得到它。请指教。

【问题讨论】:

您的连接字符串存储在哪里?在配置文件中?如果在文件中,您确定他们可以访问它吗? @Brian 它没有存储在配置文件中。访问连接字符串不是问题。 你有一个数据库密码,这意味着它是加密的。如果这是在没有“旧版加密”的 Access 2010 或更高版本中完成的,并且问题用户都拥有 Access 2007,则会导致该错误。 需要访问驱动程序。 @HansUp 感谢您的帮助 【参考方案1】:

您的连接字符串表明您正在使用Microsoft.ACE.OLEDB.12.0 驱动程序。

这必须安装在机器上,因为它不附带 windows。

你可以在Microsoft Access Database Engine 2010 Redistributable找到驱动

【讨论】:

我正在让一个用户尝试这个。 如果未安装该提供程序,则错误消息应为“未找到提供程序”。 @HansUp 你可能是对的,但鉴于数据库返回的是空字符串,这似乎表明某种机器问题。如果它在一台机器上而不是另一台机器上成功,并且它没有权限,则可能是驱动程序安装损坏。 @JdinklageMorgoone 请确保他们实际上运行的软件版本与正常运行的机器相同,我不想让它变得愚蠢。 @paqogomez 哪个软件的相同版本 - 我的应用程序?【参考方案2】:

如果错误是无法打开数据库。它可能不是您的应用程序识别的数据库,或者文件可能已损坏,请确保数据库文件 (ACCDB/MDB) 不超过 2GB,因为这是任何 Access 数据库文件的限制。 p>

参考Here

【讨论】:

以上是关于MS Access/accdb“无法打开数据库”错误(C#)的主要内容,如果未能解决你的问题,请参考以下文章

MS Access .accdb 文件为其他打开,但给了我“无法识别的数据库格式”

连接到 Windows Server 2008 上的 MS Access accdb 文件

如何将 Entity Framework Code First 与现有的 MS Access (.accdb) 数据库一起使用?

C# 从 Access .accdb 读取附件

将 32 位 VB.Net 连接到 64 位 Access .ACCDB

通过 WPF 应用程序从 Access (.accdb) 中检索查询、表单和报表属性