Oracle JDBCプログラミング・第一歩

 このページでは、
  • OracleのOCI/Thin JDBCドライバを使って
  • StatementクラスでデータベースにSQL文を発行する
  • Javaアプリケーション
のサンプルを紹介します。

Oracle Thin JDBCドライバを使ったプログラム
 後述のOracle OCI JDBC(Type 2) ドライバを使う場合、 実行するクライアントPCにNet8をインストールしてある必要があります。 これに対しこのOracle Thin JDBC(Type 4)ドライバを使うプログラムは、 Oracleサーバーとのデータ通信にNet8を使用しないため、 Oracleクライアント製品をインストールしていないマシンからもOracleデータベースにアクセスできます。 最近はOCIドライバの処理の高速性の利点が薄れてきたこともあり (サーバ機のCPU処理性能の向上により、 データベースアクセスのキャッシング技術(接続ぷーリング等) が性能を最も左右する要因となってきた)、このThinドライバの方が主流になってきています。

 ではサンプルです。

import java.sql.*;
import java.io.*;

public class ThinJdbcTester {
  public static void main (String args []) throws SQLException, IOException {
    // Oracle JDBC driverをロードします。
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

    // 接続情報をセットします。ユーザー、パスワード、ホスト文字列
    // (TNS接続文字列)をSQL*Plusのログオン時と同様に指定します。
    String user     = "URANO";
    String password = "URANO398";

    Connection conn =
      DriverManager.getConnection(
"jdbc:oracle:thin:@falcon.nsnhnkmmkk.co.jp:1521:eodb", user, password);
    // SQL文(DML文)を作ります。
    Statement stmt = conn.createStatement ();
    // SELECT文の場合はexecuteQuery()を実行します。
    ResultSet rset = stmt.executeQuery ("select 'Hello World' from dual");
    while (rset.next ())
      System.out.println (rset.getString (1));
    // 結果セットを解放
    rset.close();
    // SQL文を解放
    stmt.close();
    // データベースから切断して、完了。
    conn.close();
  }
}
// end.

 JDBCの基本的な流れは、

  1. JDBCドライバを登録する。
  2. RDBMSに接続(ログオン)する。
  3. Statementオブジェクトを作る。
  4. SQL文を実行する。
  5. SELECT文の場合は、結果集合を取り出して処理をする。
  6. Statementなど使用した資源を解放する。
  7. RDBMSから切断(ログオフ)する。
という感じになります。ソースプログラムはThinJdbcTester.java という名前で保存し、通常通りJ2SEのjavacコンパイラなどでコンパイルし、 javaインタープリタなどで実行すればOKです。

 ThinドライバはNet8を使用しないので、TNS接続文字列は使いません。 代わりに、getConnectionメソッドの引数でOracleサーバーのホスト名、 リスナーの接続ポート番号、それにインスタンス名を指定する必要があります。

String user     = "URANO";
String password = "URANO398";

Connection conn =
  DriverManager.getConnection(
"jdbc:oracle:thin:@falcon.nsnhnkmmkk.co.jp:1521:eodb", user, password);

 なお、クラスの定義の冒頭部に「throws SQLException」とあるように、 JDBCに関連するクラスのメソッドやコンストラクタの多くは、 JDBCドライバが見つからない、RDBMSに接続できない、 SQL文の文法がおかしい、といったエラーっぽい状況になったとき、 SQLExceptionという例外を飛ばします。

JDBCのサンプル(DML文)
 次にUPDATE、INSERT、DELETE文 (まとめてDML=Data Manipulation Languageと呼ばれます)を発行してみます。 プログラム名はJdbcUpdateTester.javaとします。

import java.sql.*;
import java.io.*;

public class JdbcUpdateTester {
  public static void main (String args [])
       throws SQLException, IOException {

    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

    String user     = "URANO";
    String password = "URANO398";

    Connection conn =
      DriverManager.getConnection(
"jdbc:oracle:thin:@falcon.nsnhnkmmkk.co.jp:1521:eodb", user, password);
    System.out.println ("connected.");

    Statement stmt = conn.createStatement ();
    int rows = stmt.executeUpdate (
      "insert into test_fruits(name, price) values('みかん', 80)");

    System.out.println ("RESULT:" + String.valueOf(rows));
    System.out.println ("Your JDBC installation is correct.");
    stmt.close();
    conn.close();
  }
}
// end.

 DMLを実行させる場合は、StatementオブジェクトのexecuteUpdateメソッドを使います。 このメソッドの戻り値は作用した行数で、例のようなINSERT文では常に1になります。

 ちなみに、JDBCではデフォルトでオートコミットになっています。 Connectionクラスにはcommit()とrollback()というメソッドがありますが、 オートコミットの状態ではこれらのメソッドは使えません (SQLExceptionが発生します)。 手動コミットに変更したい場合には、Connection.setAutoCommit() メソッドを使います。

OCIドライバのサンプル(問い合わせ文)
 今度はJDBCでSQLのSELECT文を発行するサンプルです。

import java.sql.*;
import java.io.*;

public class OCIJdbcTester {
  public static void main (String args [])
       throws SQLException, IOException {
    // Oracle JDBC driverをロードします。
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

    // 接続情報をセットします。ユーザー、パスワード、ホスト文字列
    // (TNS接続文字列)をSQL*Plusのログオン時と同様に指定します。
    String user     = "URANO";
    String password = "URANO398";
    String database = "EODB";

    Connection conn =
      DriverManager.getConnection ("jdbc:oracle:oci8:@" + database,
           user, password);
    System.out.println ("connected.");

    // SQL文(DML文)を作ります。
    Statement stmt = conn.createStatement ();
    // SELECT文の場合はexecuteQuery()を実行します。
    ResultSet rset = stmt.executeQuery ("select 'Hello World' from dual");
    while (rset.next ())
      System.out.println (rset.getString (1));

    System.out.println ("Your JDBC installation is correct.");
    // 結果セットを解放
    rset.close();
    // SQL文を解放
    stmt.close();
    // データベースから切断して、完了。
    conn.close();
  }
}
// end.


 OCIドライバを使ってOracleに接続するには、SQL*Plusで接続するときと同様、 ユーザー、パスワード、それにホスト文字列を指定します。

String user     = "URANO";
String password = "URANO398";
String database = "EODB";

Connection conn =
  DriverManager.getConnection("jdbc:oracle:oci8:@" + database,
    user, password);

JDBC and Swing Top

(first uploaded 2000/11/19 last updated 2002/07/28, URANO398)

Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!