(補足)Oracleへの接続
JDBC (補足)Oracleへの接続
この章ではOracleデータベースへの接続について説明します。サンプルプログラムの実装対象とするOracleのバージョンは「8.1.6」ですが、それ以上のバージョンについてもほぼ同じです。 1. OCI Driverを用いた接続方法Oracleは「Oracle JDBC OCI Driver」と「Oracle JDBC Thin Driver」の2種類のJDBCドライバを提供しています。どちらのドライバを使用する場合でも、Oracleのインストールディレクトリの「jdbc/lib」にある「classes111.zip」か「classes12.zip」(前者はJDK1.1用。後者はJava2用)をクラスパスに含める必要があります。(Oracle 9iではThinドライバとOCIドライバでファイルが分かれていますので、それぞれ必要なものをクラスパスに含めてください。) 「Oracle JDBC OCI Driver」は「Oracle Call Interface(OCI)」を使用してOracleデータベースに接続します。このため実行時にOCIのライブラリ(インストールディレクトリの「lib」以下)が必要で、実質的にOracle Clientがインストールされているマシンでしか使用することができません。実行時にはライブラリのあるディレクトリを、「java.library.path」という環境変数か、Linuxの場合は「LD_LIBRARY_PATH」環境変数に設定する必要があります。 Oracleデータベースへの接続方法はPostgreSQLでの方法とほぼ同じです。まず最初にJDBCドライバをロードします。 Class.forName("oracle.jdbc.driver.OracleDriver");
次に接続するデータベースを指定します。 Connection connection=DriverManager.getConnection("jdbc:oracle:oci8:@oracle.techscore","scott","tiger");
引数の1つ目はデータベースのURL、2つ目がユーザ名、3つ目がパスワードです。データベースのURLはOCI Driverの場合 jdbc:oracle:oci8:@(tnsnames.oraに登録されているデータベースサービス名) になります。予め「tnsnames.ora」設定ファイルにデータベースが登録されている必要があります。 2. Thin Driverを用いた接続「Thin Driver」はクライアントライブラリを使用せず、Net8プロトコルを用いて直接Oracleデータベースに接続するタイプのJDBCドライバです。クラスライブラリだけで動作する事ができるので、Oracle Clientがインストールされていないマシンでも動作させる事が可能です。 Oracleデータベースへの接続方法は、「OCI Driver」とほぼ同じです。 Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection=DriverManager.getConnection("jdbc:oracle:thin:@dbserver:1521:oracle","scott","tiger");
「getConnection」の第1引数の形式だけが異なります。 jdbc:oracle:thin:@(ホスト名):(ポート番号):(接続するデータベースのSID)
「OCI Driver」はJDBCタイプ2、「Thin Driver」はJDBCタイプ4のドライバです。したがって通常は「Thin Driver」の方が使い勝手が良いのですが、機能によっては「OCI Driver」にしかサポートされていないものもあります。使い勝手が良いのは「Thin Driver」、高機能なのは「OCI Driver」といったところでしょうか。場合によって使い分ける必要があります。 3. SQL文の実行接続完了後のクエリーの実行は、PostgreSQLと全く同じです。Oracleではサンプルとしてインストールされる「scott」スキーマの「DEPT」テーブルを主に使用します。このテーブルの定義は以下の通りです。
Statement statement=connection.createStatement();
ResultSet result=statement.executeQuery("select DEPTNO,DNAME,LOC from DEPT");
while(result.next()){
...
}
PostgreSQLの場合と異なり、
に注意してください。またOCIドライバで日本語データを含むSQL文を扱う場合、環境変数「NLS_LANG」が適切に設定されていなければならない点にも注意してください。Linuxの場合は export NLS_LANG=Japanese_Japan.JA16EUC とする事になります。 更新処理の方法もPostgreSQLと同じです。 PreparedStatement statement=connection.prepareStatement("insert into DEPT values(?,?,?)");
...
statement.executeUpdate();
(実習課題1)以下のコンソールプログラムを作成しなさい。
(実習課題2)以下のコンソールプログラムを作成しなさい。
(実習課題3)実習課題2のプログラムを改良しなさい。
|
![]()
![]()
|