2

JDBC-ODBC 経由で Access ファイルに接続するアプリケーションで発生した問題に対処しています。他の Windows プラットフォームでは、この問題は発生していませんが、Windows 7 64 ビット ボックスでは、DSN を使用しない接続文字列で接続しようとすると、次のように返されます。

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

文字列に対して複数のバリエーションが試行されましたが、すべて同じエラーが返されました。現在、接続を試みる方法は次のとおりです。

  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

  StringBuffer databaseConnectionString;

  if (SystemUtils.IS_OS_WINDOWS_7) {
       databaseConnectionString = new StringBuffer("jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=");
       databaseConnectionString.append(databaseFile);

  } else {
       databaseConnectionString = new StringBuffer("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=");
       databaseConnectionString.append(databaseFile);
       databaseConnectionString.append(";DriverID=22;READONLY=false}");
  }

32 ビット ODBC データ ソース管理でドライバーを調べると、ドライバーが存在することが確認されます。ただし、regedt32.exe を使用して ODBC ドライバーを調べると(HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/ODBC Drivers)、どれも表示されません。

誰かがこれに光を当てるのを助けることができますか?

4

2 に答える 2

3

問題は、プログラムを 64 ビット Java で実行していたことにあることがわかりました。プログラムが 32 ビットまたは 64 ビットの Java で実行されているかどうかはまだ正常に検出されていませんが、32 ビットの Java ランタイム環境をインストールし、次のような .bat ファイルを使用して解決しました。

@echo off

"C:\Program Files (x86)\Java\jre6\bin\java" -D32 -Xmx1024m -jar programName.jar

助けてくれてありがとう!

于 2010-09-29T17:23:27.117 に答える
0

JAVA または MS の ODBC ドライバーからの意味のあるエラー メッセージが不足しているため、これは困難な課題でした。32 ビット Java および MS Access ドライバー (MS の AccessDatabaseEngine.exe を使用) へのダウン選択に関する上記の回答は機能しましたが、64 ビット Java を使用する場合と比較して、他のアクションの処理にかなりのペナルティ (約 30%) がかかりました。私はこの価格を払いたくなかったので、64 ビット Java をインストールしました (32 ビットと組み合わせて、両方とも別のディレクトリ c:\Java\32 または 64 に)。私はApache Geronimoを使用していたので、この後者のディレクトリの問題は私にとって重要であり、JavaがProgram Files(x86)にインストールされていると起動しませんでした...(x86)はバッチファイルの解析を強制終了したようです。次に、32 ビット MS Access をアンインストールし、64 ビット MS Access (AccessDatabaseEngine_x64.exe) をインストールしました。最後に、高速と MDB 接続の両方で動作しました。

于 2013-08-10T02:27:29.657 に答える