Oracleのフリーのバージョン、Oracle Database 10g Express Edition(Oracle Database XE)を、JDBC接続します。
ここJavaでHello World > JDBC(MySQL)編 と同じ内容を行い、比較できるようにしたいと思います。
■Oracle Database XEのインストール
まず、
Oracle Database 10g Express Edition
http://www.oracle.com/technology/products/database/xe/index.html
に行きます。右側の「Free Download」をクリックして、ダウンロードします。
途中、ログインするように聞いてきます。これは、OTNとは違うみたい・・・
登録して、ダウンロードしました。
ダウンロードするのは、Univなんとかのほう。Westan何とかのほうではなく。
その後、ダウンロードしてきたファイル
OracleXEUniv.exe
をダブルクリックして実行する。
途中、パスワードを聞いてくる。このパスワードは後で必要なので、忘れないこと。
(以下、このパスワードに password と入れたものとして話を進める)
また、8080のポートを使おうとし、もし、つかっていると、他のポート(8081とか)になる。
なので、Tomcatを立ち上げていると競合するので・・・
わざと立ち上げておいて、他のポートを選ばせるか、立ち上げないで8080を使わせるかは、
適当に考えてくれ。
(以下、8080ポートが選ばれたものとします。)
で、正常に終わると、インストール終了となる。
■ブラウザからSQL入力画面を出す
インストール終了直後ならそのまま、
そうでないなら、
スタートメニュー→Oracle 10g Express Editoon→データベースの起動
で、Oracleを起動してから、
ブラウザで
http://127.0.0.1:8080/apex/
(8080のポート番号は、インストール時に違う番号にしていたら、その番号にする)
を開きます。
データベースユーザー名とパスワードを入れられるので
ユーザー名 SYSTEM
パスワード インストールのとき設定したパスワード(password)
を入れます。すると、
「管理」、「オブジェクト・ブラウザ」、「SQL」、「ユーティリティ」と出るので、
「SQL」をクリック。
つぎに、「SQLコマンド」、「SQLスクリプト」、「クエリービルダー」とでるので、
「SQLコマンド」をクリック。
上に、SQLが入れられる画面が出ます。
■SQLの入力
上記の画面から、
JavaでHello World > JDBC(MySQL)編
http://www.hellohiro.com/jdbcmysql.htm
に書いてあるSQLを入力します。
まず、テーブルを作成するため、そこに書いてあるのと同じCREATE TABLEを入れます
CREATE TABLE HELLO_WORLD_TABLE ( NO INTEGER NOT NULL, LANGUAGE VARCHAR(50), MESSAGE VARCHAR(100), PRIMARY KEY(NO) ); |
つぎに、データ入力ですが、1行にして、1行づつ入れていきます。
INSERT INTO HELLO_WORLD_TABLE VALUES ( 1 , '日本語' , 'こんにちわ 世界'); |
そしたら、
INSERT INTO HELLO_WORLD_TABLE VALUES ( 2 , '英語' , 'Hello World'); |
入力したら、SELECTしてくれると、入っている状況が見れます。
■JDBCのリンク
Eclipseの場合、プロジェクトを作って、JDBCのパスを通します。
JDBCのパスを通すには、そのプロジェクトを右クリック、
propertiesを選択すると出てくるJava Build Pathから、Librariesタブをクリックして
Add External JARSボタンをクリックすると指定できます。
OracleのJDBCですが、インストールすると、ふつう、ドライブ直下(たとえばC:)に、
C:¥oraclexe
っていうのができています。そのずーっとした、
C:¥oraclexe¥app¥oracle¥product¥10.2.0¥server¥jdbc¥lib
(¥は全角で書いてるけど、本当は半角)
フォルダに、ojdbc14.jarとojdbc14_g.jarの2つがあるので、どちらか好きなほうを選択してください。
(実行するにはどちらでもいいです。デバッグ情報がちょっと違います)
なお、これを選ぶということは、Javaのバージョンは、1.4以上ってことになります。
-----
Eclipseでないひとは、javacコマンド、Javaコマンドでクラスパスを通すときに、上記のojdbc14.jar
をリンクしてください。
■検索した結果を表示するコードの作成
Javaのプログラムは、こんなかんじ。
import java.sql.*; import oracle.jdbc.pool.OracleDataSource; public class test { public static void main(String[] args) { try { // ドライバクラスをロード OracleDataSource ods = new OracleDataSource(); ods.setUser("system"); // ユーザー名をセットする ods.setPassword("password"); // パスワードをセットする ods.setURL("jdbc:oracle:oci:@"); //デフォルトのところに入れたので // データベースへ接続 Connection con = ods.getConnection(); // ステートメントオブジェクトを生成 Statement stmt = con.createStatement(); String sql = "SELECT * FROM HELLO_WORLD_TABLE"; // クエリーを実行して結果セットを取得 ResultSet rs = stmt.executeQuery(sql); // 検索された行数分ループ while(rs.next()){ // NOを取得 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でHello World」と比較すると、はじめのcon生成までが違っているけど、
他は同じ。
こんなかんじ・・・