3

Odbc を使用して、C# から Access MDB ファイルに接続したいと考えています。

実行しようとすると

OdbcConnection con = new OdbcConnection(
    "Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\\temp\\test.mdb;");

次の例外が発生します。

exc {System.Data.Odbc.OdbcException (0x80131937): ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
   at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
   at System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection connection, OdbcConnectionString constr, OdbcEnvironmentHandle environmentHandle)
   at System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.Odbc.OdbcConnection.Open()
   :

ここでの問題は何ですか?「データソース名が見つからず、デフォルトのドライバーが指定されていません」と表示されますが、ドライバーを指定しましたか?

ここから助けを借りて接続文字列を取得しましたhttp://www.connectionstrings.com/access#net-framework-data-provider-for-odbc

4

3 に答える 3

4

ああ、問題の原因が見つかりました。他の人も同様に遭遇する可能性があると思います:

OSが32ビットWindowsの場合は32ビット.net vmで、OSが64ビットWindowsの場合は64ビットvmで実行される.netアプリケーションを作成しています。syswow と system32 で 2 つの odbcad32.exe を使用します (system32 のものは 64 ビット用ですが、どちらも odbcad32.exe という名前です)。そのため、アプリケーションが 64 ビット Windows で実行されている場合、.net は 64 ビット バージョンの odbc を使用しようとしており、ドライバーが見つかりません。

さて、64 ビット アクセス ドライバーが必要になりました。これは、この入力リンクの説明をここに入力すると、存在しません。投稿は古いので、現在は存在する可能性がありますか?

プロジェクト設定でプラットフォームを強制的に x86 にすると、機能します。もちろん、これにより、アプリが 32 ビットの .net vm で実行されることも強制されます。

于 2013-01-28T17:24:55.977 に答える
0

udl ファイルを作成し、接続を作成してから、メモ帳でファイルを開いて接続文字列を確認できます。これは過去に私を助けてくれました-

http://msdn.microsoft.com/en-us/library/e38h511e%28v=vs.71%29.aspx

これを使用して、odbc ツールの場合と同様に通常の接続を作成し、それが機能することを確認できます。

それが役立つことを願っています。

于 2013-01-28T17:16:13.933 に答える
0

以下の例のような Web 構成設定を使用します

<add      name="ODBCDataConnectionString"   connectionString="Driver=ODBCDriver;server=ODBCServer;"   providerName="System.Data.Odbc"   />
于 2013-01-28T17:10:41.527 に答える