PreparedStatement.executeUpdate メソッドを使用した表のデータの更新
データ・サーバー表を定数値で更新する場合は、Statement.executeUpdate メソッドを使用できます。 ただし、更新するには多くの場合、値を変数に格納して表に渡す必要があります。 その場合に使用できるのが、PreparedStatement.executeUpdate メソッドです。
このタスクについて
また、 IBM® Data Server Driver for JDBC and SQLJ、 PreparedStatement.executeUpdate を使用して、入力パラメータがあり出力パラメータがなく、結果セットを返さないストアドプロシージャを呼び出すこともできます。
- 整数
- 二重
- Decimal
- 文字
- 16進法
- Graphic
IBM Informix® データソース上のストアドプロシージャの呼び出しの場合、 PreparedStatement オブジェクトは、CALL ステートメントまたは EXECUTE PROCEDURE ステートメントにすることができます。
1 つの SQL ステートメントを何度も実行する場合は、 SQL ステートメントを PreparedStatement として作成する方がパフォーマンスが良くなります。
UPDATE EMPLOYEE SET PHONENO='4657' WHERE EMPNO='000010'この操作を一般化して、従業員表の電話番号と従業員番号のあらゆる組み合わせを更新するとしましょう。 その場合は、定数の電話番号と従業員番号を変数に置き換える必要があります。UPDATE EMPLOYEE SET PHONENO=? WHERE EMPNO=?この形式の変数のことをパラメーター・マーカーといいます。プロシージャー
パラメーター・マーカーを指定した SQL ステートメントを実行するには、以下の手順を実行する必要があります。
例
Connection con;
PreparedStatement pstmt;
int numUpd;
…
pstmt = con.prepareStatement(
"UPDATE EMPLOYEE SET PHONENO=? WHERE EMPNO=?");
// Create a PreparedStatement object 1
pstmt.setString(1,"4657"); // Assign first value to first parameter 2
pstmt.setString(2,"000010"); // Assign first value to second parameter
numUpd = pstmt.executeUpdate(); // Perform first update 3
pstmt.setString(1,"4658"); // Assign second value to first parameter
pstmt.setString(2,"000020"); // Assign second value to second parameter
numUpd = pstmt.executeUpdate(); // Perform second update
pstmt.close(); // Close the PreparedStatement object 4
パラメーター・マーカーのないステートメントの場合も、PreparedStatement.executeUpdate メソッドを使用できます。 パラメータマーカーのない PreparedStatement オブジェクトを実行する手順は、パラメータマーカーのある PreparedStatement オブジェクトを実行する手順と似ていますが、 ステップ2 をスキップする点が異なります。 そのための手順を以下の例で示します。
Connection con;
PreparedStatement pstmt;
int numUpd;
…
pstmt = con.prepareStatement(
"UPDATE EMPLOYEE SET PHONENO='4657' WHERE EMPNO='000010'");
// Create a PreparedStatement object 1
numUpd = pstmt.executeUpdate(); // Perform the update 3
pstmt.close(); // Close the PreparedStatement object 4