JDBC ソフトウェア特論 第3回
この講義のWebページ http://www.wakhok.ac.jp/~tomoharu/tokuron2003/
きょうの内容 JDBCのプログラミングの基本を知る。
JDBCとは何か? JDBCは、Javaを使ってリレーショナルデータベースを利用するためのAPI。 主に java.sql パッケージと javax.sql パッケージに納められている。
JDBCプログラミングの基本パターン データベースとの接続の確立 SQLの実行 SQLの実行結果の処理 Connection オブジェクトを取得 SQLの実行 Statement オブジェクトを取得し、SQL文を実行 SQLの実行結果の処理 ResultSet オブジェクトのデータを取り出す
データベースとの接続の確立 (1) 必要な情報とJDBCドライバ Connection オブジェクトを取得するのが目標 次の情報が必要になる JDBCドライバ データベースの URL データベースにアクセスするユーザ名とパスワード データベース管理システム (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 を使った例 String select = "select title from books"; // Statement の取得 Statement stmt = con.createStatement(); // SQLの実行 (結果は ResultSet に) ResultSet rs = stmt.executeQuery(select);
SQL の実行 (3) PreparedStatement を使った例 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