web-dev-qa-db-ja.com

JDBCの削除ODBC bridge in Java 8

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

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

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

33
Karthik

Java 8でもJDBC-ODBC Bridgeを使用できます。次の簡単なレシピに従ってください:

  1. JDK 7またはJRE 7をダウンロードします。
  2. JRE\libフォルダーに移動して、rt.jarを見つけます。
  3. 解凍します(WinRARまたは7Zipがインストールされている場合)。または、名前をrt.Zipに変更して解凍します。
  4. Sun\jdbcおよびSun\security\actionフォルダーをコピーし、フォルダー構造を保持します。つまり、次のようなフォルダ構造が必要です。

    Sun --> Security --> Action
        --> JDBC
    
  5. CMDウィンドウを開きます。 Sunフォルダーの親フォルダーに移動します。次のコマンドを実行します:jar -cvf jdbc.jar Sun

  6. 上記のコマンドはjdbc.jarという名前のファイルを作成します
  7. JDBC.jarをJDK8またはJRE8 libフォルダーにコピーします。それでもうまくいかない場合は、lib\extフォルダ。
  8. Jdbcodbc.dllをJRE 7インストールのJRE\binからJRE 8インストールのJRE\binにコピーします。
  9. JVMを再起動します。

JDK 8のJDBC-ODBCブリッジを有効にする方法

23
frhack

さて、私の意見では Oracleの従業員によるこのブログエントリ はすべてを言っています:

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

JDBC-ODBCブリッジを使用しているのはどのようなアプリケーションですか?

  • 本番コードの場合、ブリッジを実際のドライバーに置き換え、レガシーデータベースをできるだけ早く実際のドライバーに置き換える必要があります
  • Access DB、Excelスプレッドシート、またはODBCを介してアクセスできるものと相互作用するテストコードの場合は、H2などのpure Javaデータベースに置き換えてみてください。
  • たとえば、開発および/または分析目的でレガシーAccess DBへのアドホックアクセスに使用し、実際に何も更新したくない、または更新したくない場合は、JDK 7に長い間固執することができます製造終了日まで、おそらくそれをはるかに超えるまで
15

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

SunとOracleの 公式の役職 は長い間-

[JVMバンドル] JDBC-ODBCブリッジは移行ソリューションと見なされる必要があります[...] OracleはJDBC-ODBCブリッジをサポートしていません。

ただし、私の雇用主 OpenLink Software は、JVM 1.0以降、JDBCとODBCの間にエンタープライズグレードの商用タイプ1ブリッジを作成しました。これらは現在のJVMと完全に互換性があります1.8。詳細についてはこちらをご覧ください-

11
TallTed

データベース接続ロジックを開くだけで既存のコードを変更できる合理的なソリューションを見つけました。

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のjarをプロジェクトのディレクトリ(JDBC-to-MSAccessなど)に配置します。 Ecpliseを使用している場合、メニューから「プロジェクト/プロパティ/ Javaコンパイラ/ライブラリ/外部JARの追加」を選択してビルドパスに追加し、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 );
10
Outlier

この質問に対する回答は古くからありますが、DataDirectのsequelinkを強調したかったのです。このブログで https://www.progress.com/blogs/jdbc-odbc-bridge-replacement-yields-performance-boost 著者は、彼らのブリッジが310%のパフォーマンス向上をもたらす方法について語っています。ブリッジの試用版はここからダウンロードできます: https://www.progress.com/jdbc/sequelink

0
user6641561

Robert Petermeierは、H2ドライブがPostgreSQLドライバーを介してODBCをサポートしているため、Stackoverflowからのリンクに従ってドライバーをインストールできます PostgreSQLのセットアップODBC = Windowsの場合

0
Singagirl