JDBC
JDBC API:Javaプログラムからデータベースを利用する際に必要になるクラス
主なクラスには以下のものがある。またjava.sqlパッケージに含まれてる。
DriverManager:データベースへの接続の準備
Connection:データベースへの接続や切断
PreparedStatement:SQL文の送信
ResultSet:データベースから検索結果を受け取る
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class ... Connection conn = null; PreparedStatement pstmt = null; ResultSet rset = null; String JDBC_URL = "jdbc:postgresql://localhost:5432/DB名"; String JDBC_USER = "postgres"; String JDBC_PASS = "~~~~~~"; try { // データベースの接続 conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASS); /* ******************************* DB操作処理をするメイン処理部分 ******************************** */ } catch ( SQLException e ) { e.printStackTrace(); }
DB操作処理部分
更新系SQLの場合:INSERT、UPDATE、DELETE
例:
PreparedStatement pstmt = conn.prepareStatement("delete from employee where age <= ?"); pstmt.setInt(1, 40); int r = pstmt.executeUpdate(); if (r != 0) { System.out.println(r + "件の情報を削除しました。"); } else { System.out.println("該当する情報はありませんでした。"); } pstmt.close();
PreparedStatementクラスで、SQL文のひな型を準備する。
PreparedStatement pstmt = conn.prepareStatement(SQL文のひな型);
SQL文のひな型に値を入れる。
下の他にもsetDouble()、setDate()などがある。
pstmt.setInt(パラメータ番号, 数値); pstmt.setString(パラメータ番号, 文字列);
検索系SQL(SELECT)の場合
検索系SQLでも、PreparedStatementクラスでSQL文のひな型を準備し、それにset〇〇メソッドで値を入れるまでは更新系SQLと同じ。検索系SQLでは、SQL文を実行する際に用いるメソッドが更新系SQLとは異なる。
検索系SQL文の送信
ResultSet rset = pstmt.executeQuery();
ResultSetオブジェクトの持つ主なメソッド
next():戻り値はboolean、注目する行を1つ進め、成功したらtrue、すでに最終行の場合はfalseを返す。
getInt(列番号)、getInt(列の名前):指定した列の整数値を取り出す。
getString(列番号)、getString(列の名前):指定した列の文字列を取り出す。
検索系SQL文を送信して返り値として戻されたResultSetオブジェクトには、検索系のSQL文で注目した1行分の情報しか入っていない。
while( rset.next() ){ System.out.println(rset.getString("NAME")); }