4

これまで、32 ビットの Access データベースに接続する必要があるときは、32 ビットの JVM を使用してアプリケーションを実行していました。しかし、現在 64 ビット JVM を必要とするアプリケーションを開発していますが、それでも 32 ビット Access データベースに接続する必要があります。接続しようとすると、次の例外が発生します。

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)

これは私のコードです:

String s = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + path;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection(s, user, password);
4

3 に答える 3

9

私の経験から

ユーザー(またはシステム?)ODBC DSNの場合、32ビットと64ビットの別々の定義があります。おそらく32ビットの定義があると思いますが、JavaODBC-Bridgeは64ビットの定義を探しています。64ビットプログラムから32ビットAccessODBCドライバーに直接接続することはできません(試してみると、これを示すエラーが発生します)。

Microsoftは32ビットODBCMicrosoftAccessドライバーをWindows(32および64ビット)で配布していますが、64ビットMsAccessドライバーはWindows64で配布していません。Microsoftから64ビットAccessODBCドライバーを入手 できます。64ビットMsAccessドライバーのダウンロードとインストールにはいくつかの問題があります

  • Java / Driverは、Java 6(64ビット)でテストしたときに断続的にしか機能しませんでした。Java 7ではテストしていません。Java6では、文字列フィールドがSQLselectステートメントの最後にある場合は問題ないと思います。一部のSQLステートメントは機能し、一部は機能しなかったことがわかりました。
  • 32ビットドライバーを使用すると、ドライバーがどこにあるかが正確にわかります。64ビットドライバーを使用すると、ドライバーがどこにインストールされるかがわかりません。これにより、自動インストールスクリプトの作成が困難になります。
  • また、個別の64ビットODBC定義を作成する必要があります。

    ===============================================

別の注意点として、32ビットJavaで実行されているデータベースプロキシ/プーリングパッケージを実行できる場合があります(TCP / IP経由で接続しますか?)。私はそれを試したことがありません。

Java64->>32ビットJavaDBを実行するDBプロキシ->>MsAccess

データベースプロキシリスト: http: //www.manageability.org/blog/stuff/jdbc-proxy-drivers

SSL-SQL-ProxyServerのようなものが機能する可能性があります

幸運を祈ります、うまくいけば誰かがあなたに解決策を提供することができます


元の回答以来、2つのJDBCドライバーがあります

オープンソース: http: //ucanaccess.sourceforge.net/site.html

コマーシャル: http ://www.csv-jdbc.com/stels_mdb_jdbc.htm

私も試していません


編集:2014年5月8日

より商用のドライバー EasysoftドライバーHXTTドライバーのようです

この記事は役に立つかもしれません


2016年1月6日編集

ゴード・トンプソンが言うように; ODBC-BridgeはJava8から削除されました。幸いなことに、 UCanAccessは積極的に開発されており、着実に進歩しているようです。

于 2012-04-24T00:34:29.310 に答える
-1

問題は、Java 32 ビットで実行する必要があることです。最新の JDK をインストールしようとすると、動作します。

JDKバージョン「jdk-7u67-windows-i586.exe」を使用して実行します

于 2014-09-02T09:04:56.600 に答える