7

我正在使用 Microsoft Access 创建我的数据库。这是我的代码:

static string Constr = "Provider=Microsoft.Jet.OLEDB.4.0;" 
                     + "Data Source = MyData.accdb";
OleDbConnection Conn = new OleDbConnection(Constr);
DataSet DataSet1 = new DataSet();
string SQLstr = "Select * from Tabel";
OleDbDataAdapter DataAdapter1;
Conn.Open();

我得到了这个例外:

System.Data.dll 中出现“System.Data.OleDb.OleDbException”类型的未处理异常

附加信息:无法识别的数据库格式

4

1 回答 1

7

您正在尝试使用 OleDb 提供程序打开使用 Access 2007/2010 (accdb) 创建的 Access 数据库,该提供程序只能理解使用 Access 2003 创建的 MDB 文件

要使用的提供程序Microsoft.ACE.OleDB.12.0应该已经安装了最新版本的 Office。

或者,您可以从Microsoft Access 数据库引擎
下载适当的位 只需注意下载适合您使用的平台(x86 或 x64)的版本。

这就是要使用的连接字符串

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=MyData.accdb";

注意:请记住,如果您安装了 Office,则相应的提供程序具有相同的 Office 位数,因此 Office 64 位附带 64 位版本的 ACE,32 位版本相同。这种情况在应用程序的部署中提出了一个非常困难的问题。您需要使用相同的位数编译您的应用程序,否则您将无法使用已安装的提供程序。(或者卸载不兼容的 Office 版本并重新安装兼容的版本。当然,如果您应该能够说服您的客户 Office 是不兼容的应用程序 :-)

于 2012-12-24T18:43:39.467 回答