C#访问Access和Win7 64位下可能遇到的 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0” 提供程序 问题
新建一個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數據庫了;?
?
總結
以上是生活随笔為你收集整理的C#访问Access和Win7 64位下可能遇到的 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0” 提供程序 问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用jar命令查看搜索提取jar包中的文
- 下一篇: Windows PatchGuard学习