java.sql.PreparedStatementは、SQLクエリを実行するためのインターフェースの一つです。
java.sql.PreparedStatementの特徴
java.sql.PreparedStatementは以下の特徴があります。
- SQL文を事前にコンパイルするので、同じSQLを使いまわす時にパフォーマンスが向上する
- パラメータ部分は後からセットできるため、SQL文の使いまわしが容易にできる
- SQLインジェクション攻撃対策にも有効
java.sql.PreparedStatementの継承・実装
実装インターフェース
・java.lang.AutoCloseable
・java.sql.Statement
・java.sql.Wrapper
導入バージョン
・JDK1.1
java.sql.PreparedStatementのAPI
戻値型 | メソッド | 静的 | 説明 |
---|---|---|---|
void | setString(int a, String b) | a番目の「?」にbをString型でセットする | |
void | setInt(int a, int b) | a番目の「?」にbをint型でセットする | |
void | setLong(int a, long b) | a番目の「?」にbをlong型でセットする | |
void | setFloat(int a, float b) | a番目の「?」にbをfloat型でセットする | |
void | setDouble(int a, double b) | a番目の「?」にbをdouble型でセットする | |
void | setDate(int a, Date b) | a番目の「?」にbをjava.sql.Date型でセットする | |
void | setBoolean(int a, boolean b) | a番目の「?」にbをboolean型でセットする | |
void | clearParameters() | 全てのパラメータをクリアする | |
boolean | execute() | ResultSetオブジェクトの取得ができる場合はtrueを返す | |
ResultSet | executeQuery() | SELECT文を実行した結果をResutSetオブジェクトで返す ※結果が無い場合でもnullにはならない | |
int | executeUpdate() | UPDATE, INSERT, DELETE,ストアドを実行する 戻り値には処理件数が返る | |
ResultSetMetaData | getMetaData() | このPreparedStatement実行時に返るResultSetのResultSetMetaDataオブジェクトを取得 |
java.sql.PreparedStatementサンプル
- (PreparedStatementを使用したINSERT実行例)
-
import java.sql.DriverManager; import java.sql.Connection; import java.sql.PreparedStatement; //JDBCドライバをロードする Class.forName("oracle.jdbc.driver.OracleDriver"); //DBへのコネクションを作成する String path = "jdbc:oracle:thin:@127.0.0.1:1521:testdb"; //接続パス String id = "user01"; //ログインID String pw = "password"; //ログインパスワード Connection conn = DriverManager.getConnection(path, id, pw); //SQL文をプリコンパイルする String sql = "INSERT INTO user_master values(?, ?, ?, ?)"; PreparedStatement ps = conn.prepareStatement(sql); //パラメータを設定する ps.setInt(1, 4); ps.setString(2, "山田四郎"); ps.setString(3, "北海道札幌市"); ps.setString(4, "011-999-9999"); //クエリ実行 int i = ps.executeUpdate(); //ステートメントのクローズ ps.close(); //コネクションのクローズ conn.close();
※例外処理は省略しています。
コメント