新建一个access数据库和表;录入几条数据;下面工具可在网上下;
ac1.cs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Data.SqlClient;
namespace CSharpAccess
{
class Program
{
static void Main(string[] args)
{
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=s:/rch.mdb");
conn.Open();
string sql = "select * from rch";
OleDbCommand command = new OleDbCommand(sql, conn);
OleDbDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount;i++ )
{
Console.Write("{0} ", reader[i]);
}
Console.WriteLine();
}
}
finally
{
reader.Close();
conn.Close();
}
}
}
}
使用命令行编译;方便起见,把ac1.cs拷贝到.net framework 的目录;C:\Windows\Microsoft.NET\Framework64\v4.0.30319>
如下;然后执行 csc 命令构建;
构建成功;
运行;出现错误
未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0” 提供程序
当前是win7 64位;多数情况下应该不存在此问题,这是系统自带的;
这个 oledb提供程序,它是一个dll, msjetoledb40.dll;下载一个此dll,和前面构建出的exe放到 一个目录下;
再运行exe,还是一样;然后把msjetoledb40.dll拷贝一份到 c:\windows\system32 目录下,再运行exe,也是一样;
查网上资料,一些信息如下;
注册组件 regsvr32 msjetoledb40.dll;
重新安装MDAC28.exe;
可能还有其他一些操作,涉及IIS或权限等;比较麻烦;
又看到一种说法,只要在VS中,在项目--》***属性-----》生成下面将目标平台改成X86;即可;
这个要看电脑的具体情况;
下面来用命令行构建,csc命令添加目标平台为x86参数;/platform参数选项如下;
用 /platform:x86 编译的程序集将在运行于 WOW64 下的 32 位 CLR 上执行。
用 /platform:anycpu 编译的 DLL 将在加载该进程的同一 CLR 上执行。(例如:IIS应用程序池中,“启用32应用程序”为True时,则在32位CLR上执行,否则在64位CLR上执行)
用 /platform:anycpu 编译的可执行文件将在 64 位 CLR 上执行。
带 /platform 参数构建,如下图;
构建好了;再运行;可以访问到mdb数据库了;