2003年度 データベース論

JDBC
データベース論
第12回
きょうの内容

JDBCのプログラミングの基本を知る。
JDBCとは何か?


JDBCは、Javaを使ってリレーショナルデータベー
スを利用するためのAPI。
主に java.sql パッケージと javax.sql パッケージ
に納められている。
JDBCプログラミングの基本パターン
1.
データベースとの接続の確立

2.
SQLの実行

3.
Connection オブジェクトを取得
Statement オブジェクトを取得し、SQL文を実行
SQLの実行結果の処理

ResultSet オブジェクトのデータを取り出す
データベースとの接続の確立 (1)
必要な情報とJDBCドライバ


Connection オブジェクトを取得するのが目標
次の情報が必要になる
–
–
–

JDBCドライバ
データベースの URL
データベースにアクセスするユーザ名とパスワード
JDBCドライバ
–
データベース管理システム (DBMS) に固有の処理をま
とめたもの
データベースとの接続の確立 (2)
プログラムの流れ
// JDBCドライバの指定
Class.forName("org.hsqldb.jdbcDriver");
// URL の指定
String url = "jdbc:hsqldb:hsql://localhost";
// Connection オブジェクトを取得
Connection con =
DriverManager.getConnection(url, "sa", "");
データベースとの接続の確立 (3)
Connection オブジェクトの取得方法

JDBCドライバの利用
–

「JNDI」というネームサービスの利用
–

いちばん一般的な方法
J2EEでは一般的
Connection Pooling の利用
–
Connection の取得は「重い」処理なので、あらかじめい
くつかのConnection をあらかじめ取得しておいてため
ておく
SQL の実行 (1)
必要なインタフェース

Connection を取得したら、次のいずれかのインタ
フェースを使ってSQLを実行する。
–
–
Statement
PreparedStatement
SQL の実行 (2)
Statement を使った例
// SQL文
String select = "select title from books";
// Statement の取得
Statement stmt = con.createStatement();
// SQLの実行 (結果は ResultSet に)
ResultSet rs = stmt.executeQuery(select);
SQL の実行 (3)
PreparedStatement を使った例
// SQL文
String insert = "insert into books
values( ? , ? , ? , ? , ? , ? )";
// SQL文を設定しておく
PreparedStatement st = con.prepareStatement(insert);
// パラメータに値を設定
st.setString(1, ndc); st.setString(2, tyosya_hyouji);
// SQL文を実行 (select文なら executeQuery)
int result = st.executeUpdate();
st.close();
SQL の実行 (4)
PreparedStatement とパラメータ
String insert = "insert into books
values( ? , ? , ? , ? , ? , ? )";
・・・・・・
// 1番目の“?” に対応
st.setString(1, ndc);
// 2番目の“?” に対応
st.setString(2, tyosya_hyouji);
SQL の実行 (5)
データベースの検索と更新
// 検索 (select) の場合
ResultSet rs =
stmt.executeQuery(selectStatement);
// 更新 (insert, update, delte) の場合
// result には更新された行数が返る
int result = prepStmt.executeUpdate();
SQLの実行結果の処理
プログラムの流れ
// ResultSet には複数の検索結果が返る
while (rs.next()) {
// 1行分の検索結果のうち、
// “title” という項目のデータを返す
String title = rs.getString("title");
System.out.println(title);
}
プログラムのコンパイルと実行


実行時にはデータベースが立ち上がっている必要
あり。
JDBCドライバが含まれる Jar ファイルを指定する
必要あり。
java –classpath
%HSQLDB_HOME%\lib\hsqldb.jar;.
JDBCTest