7.JDBC-ODBC brige

JDBC-ODBC ブリッジは、JDBC ドライバの一つです。このドライバは、JDBC オペレーションを ODBC オペレーションに翻訳することで JDBC オペレーションを実装します。Java の JDBC-ODBC brige API を Aplication 版で、ACCESS データベースを前提に説明します。

(1) JDBC-ODBC ブリッジの概要


 JDBC-ODBC ブリッジは、ODBC ドライバしかないDBシステムにとっては唯一の手段です。但し、Applet から使うことはできません。

 このブリッジは、sun.jdbc.odbc Java パッケージとして実装され、ODBC にアクセスするために使用されるネイティブライブラリが含まれています。

 ODBC 経由で接続する場合のJDBCドライバはJ2SE SDKに含まれており、sun.jdbc.odbc Java パッケージは rt.jar に存在しています。次のDOS-コマンドでその所在を確認できます。

  C:\> cd jdk1.3.1_06\jre\lib
  C:\jdk1.3.1_06\jre\lib> jar tvf rt.jar > dump.txt

 dump.txt の内容
    7101 Thu Jan 25 09:55:26 JST 2001 sun/jdbc/odbc/JdbcOdbcDriver.class
 ※このフォルダーは自動的に検出するのでクラスパスは不要です。

(2) JDBC-ODBC ブリッジの Aplcation 例


 次の例は、データベース(ACCESS)を参照する Java Aplication のスタイルです。

//HelloWorldMySQLJDBC.java
import java.sql.*;

public class HelloWorldMySQLJDBC {
  public static void main(String[] args) {
    try {
      Class.forName
           ("sun.jdbc.odbc.JdbcOdbcDriver");
      Connection con = 
         DriverManager.getConnection
                   ("jdbc:odbc:hello");
      Statement stmt = 
         con.createStatement();
      String sql = "SELECT * FROM HELLO_TBL";
      ResultSet rs = stmt.executeQuery(sql);

      while(rs.next()){
        int no = rs.getInt("NO");
        String lang = rs.getString("LANGUAGE");
        String msg = rs.getString("MESSAGE");
        System.out.println(no + " " +
                            lang + " " + msg);
      }

      stmt.close();
      con.close(); 
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

java.sql は必須




*1 ドライバクラスのロード
*2 データベースに接続


*3 SQL ステートメント
  オブジェクトの生成
*4 SQL 文の実行と結果取得
 SQL 文の記述
 (検索:テーブル、項目、条件)

*5 検索された行数分をループ
  int 型の項目 NOを取得
  文字型の項目 言語と
      メッセージを取得
  標準出力(表示)


*6 クローズ
  SQL stmt をクローズ
  データベースから切断
*7 Exception エラー
 標準エラーストリーム
 に出力


実行結果
C:\java_test>javac HelloWorldJDBCAccess.java

C:\java_test>java HelloWorldJDBCAccess
1 日本語 こんにちは 世界
2 英語 Hello World
3 ドイツ語 Hallo Welt
4 スペイン語 Hola Mundo
 ※ACCESS テーブル 定義の内容 ==> hello_world_table




前の章(6.JDBC API ( Transaction ))