この質問を拡張して、 アクセス mdb ファイルの OdbcConnection を作成するための ConnectionString とは何ですか? C# ではなく、C++ 64 ビット アプリケーションから。それが違いを生むかどうかわからないので、ここに入れます:)
32ビット用にコンパイルすると、mdbファイルに接続できます
"driver={Microsoft Access Driver (*.mdb)};Dbq=mlog.mdb;UID=;PWD="
これが最適な方法かどうかはわかりませんが、うまくいきます。
ここで、アプリケーションを 64 ビットでコンパイルする必要があります。上記の接続文字列が機能しなくなったので、http://www.connectionstrings.com/access/をチェックアウトして試しました
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=mlog.mdb;Persist Security Info=False;"
しかし、成功しません。
私が使う
ret = SQLDriverConnect(dbc, 0, connectionstring, SQL_NTS, outstr, 1024, &outstrlen, SQL_DRIVER_NOPROMPT);
if (SQL_SUCCEEDED(ret)) ...
接続しようとします。しかし、それは常に失敗します。SQLGetDiagRec() を呼び出すと、空の文字列が返されます。
Access 2010 64bit ドライバーもインストールしました。c:\windows\system32\odbcad32.exe を確認すると、「Microsoft Access Driver (*.mdb, *.accdb)」がインストールされており、バージョン 14.00.7010.1000 が ACEODBC.DLL に含まれています。
ここで何が問題なのですか?