7

MicrosoftAccessを使用してデータベースを作成しています。これが私のコードです:

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で発生しました

追加情報:認識されないデータベース形式

4

1 に答える 1

7

Access 2007/2010 (accdb) で作成された Access データベースを、Access 2003 で作成された MDB ファイルのみを認識できる OleDb プロバイダーで開こうとしています。

使用するプロバイダーはMicrosoft.ACE.OleDB.12.0、最新バージョンの Office と共に既にインストールされている必要があります。

別の方法として、 Microsoft Access データベース エンジンから適切なビットをダウンロードすることもできます
。使用するプラットフォーム (x86 または x64) に適したバージョンをダウンロードするように注意してください。

そして、それが使用する接続文字列です

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

注: Office がインストールされている場合、対応するプロバイダーの Office のビット数は同じであるため、Office 64 ビットでは 64 ビット バージョンの ACE が提供され、32 ビットでも同じであることに注意してください。このシナリオは、アプリケーションの展開において非常に難しい問題を引き起こします。アプリケーションを同じビット数でコンパイルする必要があります。そうしないと、インストールされたプロバイダーを使用できなくなります。(または、互換性のないバージョンの Office をアンインストールし、互換性のあるバージョンを再インストールします。もちろん、Office が互換性のないアプリであることを顧客に納得させることができれば:-)

于 2012-12-24T18:43:39.467 に答える