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) 数据库一起使用?