36

Java 8 以降、JDBC-ODBC ブリッジは JDK に含まれなくなりました。

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // classNotFoundException is thrown

JDBC-ODBC Bridge を接続する他のソリューションはありますか?

4

5 に答える 5

15

さて、私の意見では、オラクルの従業員によるこのブログエントリはそれをすべて述べています:

JDBC-ODBCブリッジの代わりに、データベースのベンダーが提供するJDBCドライバーまたは商用のJDBCドライバーを使用することをお勧めします。

JDBC-ODBCブリッジを使用しているアプリケーションの種類は何ですか?

  • 実稼働コードの場合は、IMHOでブリッジを実際のドライバーに置き換え、レガシーデータベースを実際のデータベースにできるだけ早く置き換える必要があります。
  • Access DB、Excelスプレッドシート、またはODBCを介してアクセスできるものと相互作用するテストコードの場合は、H2などの純粋なJavaデータベースに置き換えてみてください。
  • たとえば、開発や分析の目的でレガシーAccess DBへのアドホックアクセスに使用し、実際には何も更新できない、または更新したくない場合は、JDK7をかなり長い間使用できます。寿命の終わりまで、そしておそらくそれをはるかに超えて
于 2013-01-13T10:37:11.867 に答える
10

データベース接続ロジックを開くだけの変更で既存のコードを使用できる合理的な解決策を見つけました。

UCanAccess はオープンソースの JDBC ドライバーです。

http://ucanaccess.sourceforge.net/site.html

これには 2 つの依存関係があり、そのうちの 1 つにはさらに 2 つの依存関係があります。

jackcess-2.0.0.jar 以降

commons-lang-2.4.jar

commons-logging-1.0.4.jar

hsqldb.jar(2.2.5)

それらはすべてオープンソースです。インターネット検索を行い、ダウンロードし、必要に応じて解凍し、4 つのすべての jar と UCanAccess 用の 1 つをプロジェクト内のディレクトリに配置します (例: JDBC-to-MSAccess)。Ecplise を使用している場合は、メニューから [Project / Properties / Java Compiler / Libraries / Add External JARs] を選択してビルド パスに追加し、5 つの jar ファイルすべてを選択します。

接続ロジックは非常に単純です。


String strConnectionString = "";
Connection conAdministrator = null;

// Register driver
Class.forName( "net.ucanaccess.jdbc.UcanaccessDriver" );

// System.getProperty( "user.dir" ) => Current working directory from where application was started

strConnectionString = "jdbc:ucanaccess://" + System.getProperty( "user.dir" )  + "\\Your-database-name.<mdb or accdb>";

// Open a connection to the database
conAdministrator = DriverManager.getConnection( strConnectionString );
于 2014-07-01T02:06:10.030 に答える