JDBC J2EE I 第6回 / 2006-01-14 1 今回の内容 JDBCプログラミングの基本パターン データベースとの接続の確立 SQLの実行 SQLの実行結果の処理 プログラムのコンパイルと実行 2 JDBCプログラミングの 基本パターン 3 JDBCとは何か? JDBCは、Javaを使ってリレーショナルデー タベースを利用するためのAPI。 主に java.sql パッケージと javax.sql パッ ケージに納められている。 4 JDBCプログラミングの 基本パターン データベースとの接続の確立 SQLの実行 Connection オブジェクトを取得 Statement オブジェクトを取得し、SQL文を実行 SQLの実行結果の処理 ResultSet オブジェクトのデータを取り出す 5 データベースとの接続の確立 6 データベースとの接続の確立 (1) 目標と必要な情報 Connection オブジェクトを取得するのが目標 次の情報が必要になる JDBCドライバ データベースの URL データベースにアクセスするユーザ名とパスワード 7 JDBCドライバ データベース管理システム (DBMS) に固 有の処理をまとめたもの 通常は、DBMSごとにJarファイルで提供さ れている 8 データベースとの接続の確立 (2) プログラムの流れ // JDBCドライバの指定 Class.forName("org.hsqldb.jdbcDriver"); // URL の指定 String url = "jdbc:hsqldb:hsql://localhost"; // Connection オブジェクトを取得 Connection con = DriverManager.getConnection(url,"sa", ""); 9 データベースとの接続の確立 (3) Connection の取得方法 JDBCドライバの利用 「JNDI」というネームサービスの利用 いちばん一般的な方法 J2EEでは一般的 Connection Pooling の利用 Connection の取得は「重い」処理なので、あ らかじめいくつかのConnection をあらかじめ 取得しておいてためておく 10 SQLの実行 11 SQL の実行 (1) 必要なインタフェース Connection を取得したら、次のいずれか のインタフェースを使ってSQLを実行する。 Statement PreparedStatement 12 SQL の実行 (2) Statement を使った例 // SQL文 String select = "select title from books"; // Statement の取得 Statement stmt = con.createStatement(); // SQLの実行 (結果は ResultSet に) ResultSet rs = stmt.executeQuery(select); 13 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(); 14 SQL の実行 (4) PreparedStatement とパラメータ String insert = "insert into books values( ? , ? , ? , ? , ? , ? )"; ・・・・・・ // 1番目の“?” に対応 st.setString(1, ndc); // 2番目の“?” に対応 st.setString(2, tyosya_hyouji); 15 SQL の実行 (5) データベースの検索と更新 // 検索 (select) の場合 ResultSet rs = stmt.executeQuery(selectStatement); // 更新 (insert, update, delte) の場合 // result には更新された行数が返る int result = prepStmt.executeUpdate(); 16 SQLの実行結果の処理 17 SQLの実行結果の処理 プログラムの流れ // ResultSet には複数の検索結果 // これをひとつずつ処理する // 検索結果が10件あれば、ループは10回まわる while (rs.next()) { // 1件分の検索結果のうち、 // “title” という項目のデータを返す String title = rs.getString("title"); System.out.println(title); } 18 プログラムのコンパイルと実行 19 Jarファイル J2SEに含まれていないJavaのプログラム (=クラスファイル)は「Jarファイル」にまとめ られている。 Jarファイル 拡張子は “.jar” Zip とほとんど同じフォーマット。つまり圧縮+ アーカイブの機能を持っている。 20 Jarファイルの取り扱い (1) J2SE 添付の jar コマンドを使う Jarファイルを作る jar cvf sample.jar sample¥ sampleフォルダ以下を sample.jar にまとめる Jarファイルを展開 jar xvf sample.jar sample.jar を展開(解凍)する 21 Jarファイルの取り扱い (2) Jarファイルの中身を見てみる jar tvf sample.jar sample.jar の中身を見てみる jar コマンドのオプションは、Unix の tar コ マンドとほとんど同じ 22 クラスパス あるプログラムをコンパイル・実行するとき、 J2SE以外のjarファイルを必要とする場合、 classpath オプションで jar ファイルを指定 する コンパイル Javac -classpath hoge.jar Test.java 実行 java -classpath hoge.jar;. Test 23 プログラムのコンパイルと実行 実行時にはデータベースが立ち上がって いる必要あり。 JDBCドライバが含まれる Jar ファイルを指 定する必要あり。 java –classpath %HSQLDB_HOME%\lib\hsqldb.jar;. JDBCTest 24
© Copyright 2024 ExpyDoc