无法访问受密码保护的Microsoft accdb数据库Microsoft.ACE.OLEDB.12.0

时间:2019-02-07 20:43:54

标签: c# oledbconnection oledbexception aceoledb

Windows 10笔记本电脑x64位

我有Microsoft Access 2010

已安装驱动程序:

-Microsoft Office Access数据库引擎2007(我认为是32位)

-Microsoft Access数据库引擎2010(我认为是64位)

我最近还是初中继承了C#项目(我认为是.net 4.0),但是我无法正确设置代码,而我读到的代码却是由于该项目使用了(受密码保护的)Microsoft访问数据库。最初,它是由一位主要开发人员处理的,然后才交给我。

安装2007 Microsoft驱动程序有助于解决“注册问题”,但是我发现该程序无法访问数据库。

运行代码,下面出现错误。

  

System.Data.OleDb.OleDbbException:无法打开数据库”。它可能不是您的应用程序可以识别的数据库,或者文件可能已损坏。

我发现,如果我打开Microsoft Access 2010,创建一个空数据库,从原始数据库中导入所有内容,然后在没有密码的情况下进行保存,则它会显示以正常运行。但是当涉及到密码时,它将停止工作

我的App.Config文件:

<add key ="exampletest"
     value ="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\test\testDB.accdb;" />

在我的accesshelper文件中:

Public static readonly string ConnectionString = 
  ConfigurationManager.AppSettings["exampletest"].ToString() +
  "Jet OLEDB:Database Password=Abc1234;";

...

Using (OleDbConnection conn = new OleDbCommection(connectionString))
{
...
If (con.State !=ConnectionState.Open)
   conn.Open();
...
}

该代码在原始开发人员中工作正常,但是如果没有诸如删除密码(代码(Abc1234)上的密码是正确的)之类的变通办法,我似乎无法重现同样的成功。我知道,因为如果我在Microsoft Access 2010;我必须输入密码)

1 个答案:

答案 0 :(得分:0)

找到解决方案 我研究的问题似乎是32位/ 64位Microsoft数据库驱动程序之间的兼容性/冲突问题

(供参考,我有: Microsoft Access 2010 64位 Microsoft Office Access数据库引擎2007(32位驱动程序) Microsoft Access数据库引擎2010(64位驱动程序) )

驱动程序端,不确定我是否需要两者。但是2007驱动程序对我来说是必须的

现在要解决:

在Visual Studio中,我只需要右键单击该项目,然后在“构建”部分中,我仅选择“任何CPU”作为平台目标(与选择用于调试/发布的任何CPU都不一样

相关问题