2011-02-02 28 views
2

Windows Server 2008 R2の標準でado.netを通じてC#でmsアクセスデータベースに接続したい。msアクセスデータベースに接続すると接続エラーが発生する

 
using System.Data.OleDb; 

OleDbConnection connectionAccess = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\testTable.mdb"); 
OleDbDataAdapter adapterAccess = new OleDbDataAdapter("Select * from test", connectionAccess); 
DataSet ds = new DataSet(); 
adapterAccess.Fill(ds); 
dataGridView1.DataSource = ds.Tables[0]; 

しかし、それはエラーを与える:

 
The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine. 

はあなたにどんな提案、なぜこのエラーが来ているを持っています。 登録されていない場合は、登録方法を教えてください。

これが原因で問題を設定するWindowsユーザーseucrityの可能性があり、事前

答えて

0

のおかげでは、パス上の権利を確認するなど

2

問題は、プラットフォームのかもしれません。 Jet OLEDBはx86(32ビットOS)のみをサポートし、x64 64(ビット)はサポートしません。 64ビットバージョンのジェットがないので、そのエラーが発生します。

ビジュアルスタジオの高度なコンパイラオプションで32ビットを使用するようにアプリに強制するには、ターゲットCPUをx86に変更します。

このsimilar question on MSDNが参考になる場合があります。

また、手動でDLLを手動で登録してみてください。あなたのJet 4.0のDLLのパスについては は以下のとおりです。

 
Microsoft Jet 4.0 OLE DB Provider 
Provider=Microsoft.Jet.OLEDB.4.0 
C:\WINNT\System32\Msjetoledb40.dll 
C:\WINNT\System32\Msjet40.dll 
C:\WINNT\System32\Mswstr10.dll 
C:\WINNT\System32\Msjter40.dll 
C:\WINNT\System32\Msjint40.dll

は、コマンドプロンプトで次のようにregsvr32を使用してDLLを登録:あなたは自由のための64ビットのACEエンジンを取得することができますクマール@dinesh

regsvr32 C:\WINNT\System32\Msjetoledb40.dll 
+1

を( http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c06b8369-60dd-4b64-a44b-84b371ede16d&displaylang=en)Jetと下位互換性があります。これらのリンクも興味深いかもしれません:http://technet.microsoft.com/en-us/library/ee681792.aspxおよびhttp://support.microsoft.com/kb/942976 – Fionnuala

関連する問題