[API] java.sql.PreparedStatementインターフェース

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

【主要メソッド】
戻値型メソッド静的説明
voidsetString(int a, String b)a番目の「?」にbをString型でセットする
voidsetInt(int a, int b)a番目の「?」にbをint型でセットする
voidsetLong(int a, long b)a番目の「?」にbをlong型でセットする
voidsetFloat(int a, float b)a番目の「?」にbをfloat型でセットする
voidsetDouble(int a, double b)a番目の「?」にbをdouble型でセットする
voidsetDate(int a, Date b)a番目の「?」にbをjava.sql.Date型でセットする
voidsetBoolean(int a, boolean b)a番目の「?」にbをboolean型でセットする
voidclearParameters()全てのパラメータをクリアする
booleanexecute()ResultSetオブジェクトの取得ができる場合はtrueを返す
ResultSetexecuteQuery()SELECT文を実行した結果をResutSetオブジェクトで返す
※結果が無い場合でもnullにはならない
intexecuteUpdate()UPDATE, INSERT, DELETE,ストアドを実行する
戻り値には処理件数が返る
ResultSetMetaDatagetMetaData()この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();

※例外処理は省略しています。

コメント

タイトルとURLをコピーしました