ホームに戻る
著作権・免責 事項

1.JDBC−ODBC(タイプ1)
 
1.1 JDBC−ODBC概要

  JDBC−ODBCブリッジは、JAVAからODBCドライバを経由したデータベースアクセスを実現する機能です。
 このタイプは、接続先のデータベースベンダーからJDBCドライバが提供されていない時に使用します。
 ODBCドライバはクライアントのリソースのため、クライアントリソースにアクセスできないアプレットからは
 使用できません。このためJAVAアプリケーションからの利用のみとなります。
 ですから、OSに依存しないというJAVAの基本概念から反しているといえるので、
 接続先のデータベースベンダーからJDBCドライバが提供されていない場合や
 JAVAからのデータベース接続方法を手軽に習得するときのみに利用するとよいでしょう。

 JDK1.2はJDBC−ODBCブリッジを標準装備されていますが、それ以前のJDKをお使いの方は、
 JDBC−ODBCブリッジをSun MicrosystemsまたはIntersolvからダウンロードする必要があります。
 ここでは、JDK1.2を前提に解説していきます。
 
 
タイプ アプリケーション アプレット 必要なドライバ
× ODBCドライバ

1.2 JDBC−ODBC構成

  JAVAアプリケーションが発行したJAVAのAPIをJDBCドライバマネージャがJDBC−ODBCブリッジに渡し、
 JDBC−ODBCブリッジがODBCのAPIに変換してデータベースに接続しています。
 下記にJDBC−ODBC構成を示します。
 
クライアント

 
 

JAVAアプリケーション
                                             ↓  
JDBCドライバマネージャ
                                             ↓
JDBC−ODBCブリッジ
                                             ↓
ODBCドライバマネージャ
                                             ↓
ODBCドライバ
                                             ↓
SQL*NET
                                             ↓


                                             
サーバ
                                             ↓
SQL*NET
                                             ↓
ORACLE(データベース)

 

1.3 ODBCデータソースの設定

 接続するデータベースへのODBCデータソースを設定します。

      Ex)
     「コントロールパネル」「ODBCデータソース」で接続するデータベースへの
     ODBCデータソースを設定する。
     以下の接続手順で使用するデータソース名:TEST
 

1.4 接続手段

 データベースへアクセスするJAVAアプリケーションの作成手順を下記に示します。

    (1) 必要クラスのインポート

    (2) ドライバのロード

    (3) データベースへの接続

    (4) DBML(SQL)の実行

    (5) データベースからの切断

 (1) 必要クラスのインポート

    まずは、必要となるクラスのインポートを定義します。
  
     import sun.jdbc.odbc.*;
     import java.sql.*;

 (2) ドライバのロード

    JDBC−ODBCブリッジの読み込みを行います。
    JDBC−ODBCブリッジの読み込みは、java.lang.ClassクラスのClass.forNameメソッドを使用します。

     Class.forName (" JDBC−ODBCブリッジ名");
 
      Ex)
     Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");

 (3) データベースへの接続

    データベースへの接続は、java.sql.DriverManagerクラスのDriverManager.getConnectionメソッドを使用して
    java.sql.ConnectionクラスのConnectionオブジェクトを取得することで行います。
  
     Connection Connectionオブジェクト =
         DriverManager.getConnection (url, user, passwd);

         urlは”jdbc:odbc:データソース名”を指定します。
         userはデータベースのユーザー名を指定します。
         passwdはデータベースのパスワードを指定します。

       Ex)
       Connection conn =
         DriverManager.getConnection ("jdbc:odbc:TEST", "scott", "tiger");

 (4) DBML(SQL)の実行

    DBML(SQL)の実行は次の手順で行います。

   1) Statementオブジェクトの作成

     SQL文を発行するためのStatementオブジェクトをConnectionインターフェースからcreateStatement メソッドを利用して作成します。

      Statement Statementオブジェクト = conn.createStatement ();

     EX)
      Statement stmt = conn.createStatement ();

   2) DBML(SQL)の実行

     DBML(SQL)は、3.1で作成したStatementオブジェクトを利用してexecuteQueryメソッドで実行します。
     また、実行結果はResultSetオブジェクトに格納されます。

      ResultSet ResultSetオブジェクト =  Statementオブジェクト.executeQuery (SQL文);
        Ex)
      ResultSet rset = stmt.executeQuery ("select ENAME from EMP");

   3) 実行結果の読み込み

     実行結果の読み込みは、3.2で取得したResultSetオブジェクトからnextメソッドで読み込みます。
     nextメソッドは、実行結果1行を先頭から読み込みます。

      ResultSetオブジェクト.next ()

         Ex)
      rset.next ()

   4) 読み込み結果の取得

     読み込み結果の取得は、3.2で取得したResultSetオブジェクトからgetStringメソッドで取得します。

      ResultSetオブジェクト.getString (列番号または列名)

         Ex)
      rset.getString (1)  // 1列目を取得

      rset.getString (”ENAME”)  // ENAMEを取得

 (5) データベースからの切断

    作成したオブジェクトをcloseメソッドを使用して明示的に解放します。
    ただし、解放せずアプリケーションを終了しても、カベレージコレクションで暗示に解放されますが、
    リソースを解放するためにも、明示的に解放するほうが懸命です。

   1) ResultSetオブジェクトの解放

     ResultSetオブジェクトをloseメソッドを解放します。

      ResultSetオブジェクト.close();

     Ex)
      rset.close();

   2) Statementオブジェクトの解放

      Statementオブジェクトをloseメソッドを解放します。

      Statementオブジェクト.close();

     Ex)
      stmt.close();

   3) Connectionオブジェクトの解放

      Connectionオブジェクトをloseメソッドを解放します。

      Connectionオブジェクト.close();

     Ex)
      conn.close();
 

Sample Sourceはこちら

実行結果はこちら
 


Copyright (C) 1999 System Infinity Corporation. All rights reserved.