0

Windows 10 笔记本电脑 x64 位

我有 Microsoft Access 2010

安装的驱动程序:

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

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

我最近继承了一个 C# 项目(我认为是 .net 4.0),但我在正确设置代码时遇到了麻烦,从我读到的内容来看,这是由于项目使用了(受密码保护的)Microsoft Access 数据库。最初它由一位主要开发人员处理,然后交给我。

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

运行代码我在下面得到一个错误。

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

我发现如果我打开 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 中打开数据库,我似乎无法重现同样的成功; 我必须输入密码)

4

1 回答 1

0

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

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

驾驶员方面,不确定我需要两者。但是 2007 年的车手对我来说是必须的

现在解决:

在 Visual Studio 中,我只需要右键单击项目,然后在构建部分中,我只需选择“任何 CPU”作为平台目标(与选择任何 CPU 进行调试/发布不同)

于 2019-02-10T18:13:24.693 回答