ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
バインド変数を使用してINSERT/UPDATE/DELETEする(PrepareStatement)
スポンサード リンク

PreparedStatementは、事前にSQLをコンパイルするので、繰り返しSQLを発行する場合に、Statementと比較すると性能が向上します。

●DBのレコードをUPDATEするには、

  (1) 自動コミットを無効にする。
     1つのトランザクションが更新SQL1つだけの場合は、特に無効にする必要はない。

 (2) PreparedStatementオブジェクトをSQL文を指定して取得する。

 (3) PreparedStatementオブジェクトのsetXXXメソッドで、SQL文の「?」に指定するバインド変数を番号
    で指定する。
      XXXの部分は、SQLカラムのデータ型とjavaのデータ型に対応したメソッドになります。
      番号は、先頭から1番から順番に指定します。

 (4) 更新するSQLを実行する。
     executeUpdate()メソッドの戻り値はinsert/update/deleteしたレコード数になります。

 (5) コミットする。

 (6) 処理が終了したら、PreparedStatementをクローズします。

例1) 表「emp」の列「emp_id」が「E03」の列「name」を「なまえ5」にupdateする。
import java.sql.*;


public class Update2 {

  public static void main(String[] args) throws SQLException {


    Connection con = null;
    PreparedStatement stm = null;


    try {
      DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
      con = DriverManager.getConnection(
                         "jdbc:oracle:thin:@127.0.0.1:1521:ORCL","test","test");

      // 自動コミットを無効にする。
      con.setAutoCommit(false);

      // PrepareStatement取得
      stm = con.prepareStatement(
                       "update emp set name = 'なまえ5' where emp_id = ?");
      // 列「emp_id」の値を設定
      stm.setString(1,"E03");
      // SQLの実行
      int cnt = stm.executeUpdate();
      // 更新件数の表示
      System.out.println(cnt);
      // コミットする。
      con.commit();

    } catch (SQLException ex) {
       // DBアクセスエラーの場合は、ロールバックする。
       con.rollback();

    } finally {
      if ( stm != null ) {
        // Statement クローズ
        stm.close();
      }
      if ( con != null ) {
        // コネクションクローズ
        con.close();
      }
    }

  }
}

スポンサード リンク


バインド変数を使用してSELECTする(PrepareStatement〜ResultSet)
バインド変数を使用してINSERT/UPDATE/DELETEする(PrepareStatement)
ORACLE独自のバッチ更新する
JDBC2.0標準のバッチ更新する

JDBC へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ