|
このページでは、
- 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の基本的な流れは、
- JDBCドライバを登録する。
- RDBMSに接続(ログオン)する。
- Statementオブジェクトを作る。
- SQL文を実行する。
- SELECT文の場合は、結果集合を取り出して処理をする。
- Statementなど使用した資源を解放する。
- 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);
|
(first uploaded 2000/11/19 last updated 2002/07/28, URANO398)
|