一段简单的访问 Access 数据库的测试代码:
using System;
using System.Data.OleDb;
using System;
using System.Data.OleDb;
public class DbTest
{
public static void Main()
{
string cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb";
OleDbConnection cn = null;
{
public static void Main()
{
string cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb";
OleDbConnection cn = null;
try
{
cn = new OleDbConnection(cnstr);
cn.Open();
Console.WriteLine("Database opened.");
}
catch (Exception exp)
{
Console.WriteLine(exp.Message);
}
finally
{
if (cn != null) { cn.Dispose(); }
}
}
}
在朋友的机器上通不过,显示Microsoft.Jet.OLEDB.4.0 未注册!
{
cn = new OleDbConnection(cnstr);
cn.Open();
Console.WriteLine("Database opened.");
}
catch (Exception exp)
{
Console.WriteLine(exp.Message);
}
finally
{
if (cn != null) { cn.Dispose(); }
}
}
}
在朋友的机器上通不过,显示Microsoft.Jet.OLEDB.4.0 未注册!
折腾半天,问题出在 x86 or x64 上!我的机器是32位系统,朋友的机器是64位系统。Microsoft Office 2003 的 Microsoft.Jet.OLEDB.4.0 和 Office 2007 的 Microsoft.ACE.OLEDB.12.0 都不支持64位!
在MSDN上搜索一下,遇到这个问题的还真不少!
解决方案(两者均可):
1、将上面的代码编译为32位代码
命令行开关指定 /platform:x86
csc /platform:x86 DbTest.cs
注:对于 Visual Studio 中的项目,打开项目的属性页,在 生成 页,指定 目标平台 为 x86。
2、安装64位的 ACE OLEDB Provider
微软为 Office 2010 提供的 Access Database Engine 有 64 位版本,下载地址如下:
http://www.microsoft.com/en-us/download/details.aspx?id=13255
注:如果机器上已经安装有32位的 Office 2010,则安装 64 位的 Access Database Engine 时,需要指定 /passive 选项,如下:
AccessDatabaseEngine_X64.exe /passive
连接字符串(ConnectionString)的写法
1、对于 Office 2000-2003 的数据库引擎
string cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;";
2、对于 Office 2007 的数据库引擎
string cnstr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=db1.mdb;";
3、对于 Office 2010 的数据库引擎
string cnstr = "Provider=Microsoft.ACE.OLEDB.14.0;Data Source=db1.mdb;";
Access Database Engine(主要是 ACE OLEDB Provider)不仅用于访问 Access 数据库,也可以用于访问 Excel 文件。
在MSDN上搜索一下,遇到这个问题的还真不少!
解决方案(两者均可):
1、将上面的代码编译为32位代码
命令行开关指定 /platform:x86
csc /platform:x86 DbTest.cs
注:对于 Visual Studio 中的项目,打开项目的属性页,在 生成 页,指定 目标平台 为 x86。
2、安装64位的 ACE OLEDB Provider
微软为 Office 2010 提供的 Access Database Engine 有 64 位版本,下载地址如下:
http://www.microsoft.com/en-us/download/details.aspx?id=13255
注:如果机器上已经安装有32位的 Office 2010,则安装 64 位的 Access Database Engine 时,需要指定 /passive 选项,如下:
AccessDatabaseEngine_X64.exe /passive
连接字符串(ConnectionString)的写法
1、对于 Office 2000-2003 的数据库引擎
string cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;";
2、对于 Office 2007 的数据库引擎
string cnstr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=db1.mdb;";
3、对于 Office 2010 的数据库引擎
string cnstr = "Provider=Microsoft.ACE.OLEDB.14.0;Data Source=db1.mdb;";
Access Database Engine(主要是 ACE OLEDB Provider)不仅用于访问 Access 数据库,也可以用于访问 Excel 文件。