2012-12-24 20 views
7

私はデータベースを作成するためにMicrosoft Accessを使用しています。ここに私のコードは次のとおりです。C#で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.OleDb.OleDbException' の未処理の例外がのSystem.Data.dll

に追加

を発生しました情報:認識できないデータベース形式

+8

http://www.connectionstrings.com/access-2007 – SLaks

+0

あなたが作成したMS Accessデータベースのバージョンは? –

+0

私はMS Access 2010を使用しています –

答えて

7

Access 2007/2010(accdb)で作成されたAccessデータベースを、OleDbプロバイダn Access 2003で作成されたMDBファイルのみを理解する

使用するプロバイダは、最新バージョンのOfficeにインストールされているMicrosoft.ACE.OleDB.12.0です。

Microsoft Access Database Engine
あなたが使用するプラットフォーム(x86またはx64)に適したバージョンをダウンロードするように注意してください。

そして、それは

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

NOTEを使用する接続文字列です:あなたはOfficeがインストールされている場合、Officeの64ビット版は64ビット版でACEが来るとなるよう、対応プロバイダは、オフィスの同じのbitnessを持っていることに注意してください32ビットでも同じです。このシナリオでは、アプリケーションのデプロイメントにおいて非常に困難な問題が生じます。同じビット数でアプリケーションをコンパイルする必要があります。そうしないと、インストールされているプロバイダを使用できなくなります。 (互換性のないOfficeバージョンをアンインストールして互換性のあるものを再インストールすることもできます)Officeが互換性のないアプリケーションであることを顧客に説得できるのであれば:-)

+0

私は文字列を静的な文字列Constr = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = MyData.accdb"に編集しました; System.Data.dllで 'System.InvalidOperationException'型の例外が発生しました。 追加情報: 'Microsoft.ACE.OLEDB.12.0'プロバイダがローカルマシンに登録されていません。 ' –

+1

これはACEドライバが原因である可能性がありますまたは32ビットドライバがインストールされていますが、アプリケーションがAnyCPU用にコンパイルされ、64ビットオペレーティングシステムで実行されている場合。 64bit OSに32bit Officeをインストールしていますか? – Steve

関連する問題