■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 2006年10月16日 楽しいJava講座 - 初心者から達人へのパスポート vol.022 セルゲイ・ランダウ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ======================================================== ◆ 01.データベース ======================================================== 前回はH2 Consoleという画面を通してSQL文をRDBMSに送り込みまし たが、この画面はあくまで人間が操作するために用意されたもので あり、JavaのプログラムからRDBMSを呼び出すときには使用 できません。 その代わりにJavaのプログラムではJDBC(Java Database Connectivity API)というソフトを使ってRDBMSにSQL文を送り込みます。 というわけで、これからJDBCの使い方を学ぶことにしましょう。 ただ、データベースが複雑で処理が複雑になってくると、JDBCを使う やり方もいささか面倒になって来ます。その場合には、JDBCに加えて Hibernateというソフトを使うとプログラミングが楽になります。 Hibernateの使い方については、後にTomcatを使ったアプリケーション 開発の話をするときにいっしょに説明します。 Hibernateを使うと、まるでオブジェクト指向データベースを使って いるかのようなプログラミングができJavaとの親和性が高いので、 その点でも使う価値があるのですが、ただ、その前にJDBCの使い方を 十分知っておく必要があります。 JDBCは基本的にはAPIであり、プログラムの中で呼び出して使用する ものです。このAPIが標準化されているために、どのRDBMSに対しても 同じプログラムで処理できることになります。 ただし、RDBMSが異なれば当然何かが違ってくるわけで、その違いを 吸収する部分が必要になります。 それがJDBCドライバー(JDBC driver)と呼ばれるもので、JDBCドライ バーは基本的には、各RDMBSのメーカーが用意します。 いわばJDBCドライバーはJDBCのAPIとRDBMSの間の仲介役をします。 そして、JavaのプログラムからRDBMSを呼び出すためには、このJDBCド ライバーをJavaのクラスパス(CLASSPATH)と呼ばれる環境変数に登録 しておく必要があります。 Eclipseの場合は環境変数の代わりにJavaのビルド・パス(後述)に 登録します。 ┌補足─────────────────────────┐ EclipseでH2 Database EngineのJDBCドライバーをクラスパスに追加す るには次のようにします。 (1) 「ウィンドウ」メニュー → 「設定」を選択する。 (2) 「設定」ウインドウの左側で「Java」の中の「ビルド・パス」の中の 「ユーザー・ ライブラリー」をクリックする。 (3) 右側の「新規」ボタンをクリックする。 (4) ライブラリー名を例えば「h2database」と入力して「OK」ボタンを クリック する。 (5) 「h2database」を選択し、「JARの追加」ボタンをクリックする。 (6) 「JARの選択」ウインドウで適切なJARファイルを選択する。 H2 Database EngineのJDBCドライバーの場合は標準のインストールでは、 C:のProgram Filesフォルダーの中のH2フォルダーの中のbinフォルダー の 中にh2.jarというファイル名で入っているので、これを選択し、 「開く」ボタン をクリックする。 (JARファイルとは何か、という話については後述) (7) 「設定」ウインドウの「OK」ボタンをクリックする。 (8) 「パッケージ・エクスプローラー」の中のJStudy1(プロジェクト名)を 右クリックし 「プロパティー」を選択する。 (9) 「プロパティー」ウインドウの左側で「Javaのビルド・パス」をクリックし、 右側の「ライブラリー」タブをクリックする。 (10) 右側の「ライブラリーの追加」ボタンをクリックする。 (11) 「ライブラリーの追加」ウインドウの中の「ユーザー・ライブラリー」を選択し、 「次へ」ボタンをクリックする。 (12) 「h2database」(これは先ほど作成したライブラリー名)の左側にチェック・ マークを入れ(クリックすればチェック・マークが入る)、「終了」ボタンをクリック する。 (13) 「プロパティー」ウインドウの「OK」ボタンをクリックする。 └───────────────────────────┘ それでは、JDBCを使ったJavaプログラムの例を見てみましょう。 前回のINSERTやUPDATEのSQL文をJDBCを使って実行するプログラムです。 (前回のメールを参照してください。前提としてHOTELテーブルを作成済み とします。) --------------------------------------------------- import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; public class DbTest { public static void main(String[] args) { { try { Class.forName("org.h2.Driver").newInstance(); Properties props = new Properties(); props.put("user", "sa"); props.put("password", ""); Connection conn = DriverManager.getConnection ("jdbc:h2:tcp://localhost:9092/test", props); conn.setAutoCommit(false); Statement st = conn.createStatement(); st.execute("INSERT INTO hotel VALUES (1, '有名ホテル', '市川市なんとか町100-100-100')"); st.execute("INSERT INTO hotel VALUES (2, '無名ホテル', '市川市かんとか町200-200-200')"); st.execute("UPDATE hotel SET address = '船橋市かんとか町200-200-200' WHERE num = 2"); st.close(); conn.commit(); conn.close(); } catch (SQLException exception) { exception.printStackTrace(); } catch (Exception otherException) { otherException.printStackTrace(); } } } } --------------------------------------------------- 今日は忙しくて時間がないので、説明は次回に回します。 ======================================================== ◆ 02.文法解説 [演算子] ======================================================== 足し算や引き算を表す「+」や「-」のように、演算に使用する記号を 演算子(operator)と言います。 Javaで使用できる演算子には、「+」や「-」の他にもいろいろなもの があります。 そのうち、足し算や引き算を表す「+」や「-」のように演算子の前と後ろ に(合計2つ)の項を指定するものを二項演算子(binary operator)と 言います。 一方、項を1つしか指定しない単項演算子(unary operator)と呼ばれる ものもあります。 (続く) ================================================ ◆ 03.演習問題 ================================================ 余力のある人は上のJavaプログラムを自分でEclipseに入力して保管& 実行してみてください。 なお、事前に(H2 Consoleを使って)前回のメールを参照してテーブル の作成を行っておく必要があります。 また、後で、H2 Consoleを使ってSQLのSELECT文で中のデータが意図した 通りになっているか確認してください。 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ★ホームページ: http://www.flsi.co.jp/Java_text/ ★このメールマガジンは 「まぐまぐ(http://www.mag2.com)」 を利用して発行しています。 ★バックナンバーは http://www.flsi.co.jp/Java_text/ にあります。 ★このメールマガジンの登録/解除は下記Webページでできます。 http://www.mag2.com/m/0000193915.html ★このメールマガジンへの質問は下記Webページにて受け付けて います。わからない所がありましたら、どしどしと質問をお寄 せください。執筆者が確認の上、適切な質問に対しては当メー ルマガジンの中で回答していきます。 http://www.flsi.co.jp/Java_text/ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ Copyright (C) 2006 Future Lifestyle Inc. 不許無断複製 |