前回はPreparedStatementでデータを取得しました。
今回は、PreparedStatementを使って、データを更新してみます。
PreparedStatementでデータを更新するサンプル
DUAL表を更新してみます。
・・とは言え、DUALの値が変わっているとみんなびっくりしてしまうので、同じ値で上書きしますw
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class PreparedStmtUpdOraTest { public static void main(String[] args) { try { new PreparedStmtUpdOraTest().execute(); }catch(Exception e) { e.printStackTrace(); } } public void execute() throws Exception { //おまじないw(ドライバのロード) Class.forName("oracle.jdbc.driver.OracleDriver"); //DBに接続(URL,USER_ID,PASSWORD) try(Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "SYS as SYSDBA", "MANAGER")) { conn.setAutoCommit(false); //SQLを発行 try(PreparedStatement pstmt = conn.prepareStatement("update dual set dummy = ? where dummy = ?")) { pstmt.setString(1, "X"); pstmt.setString(2, "X"); pstmt.executeUpdate(); conn.commit(); } catch(SQLException sqle) { conn.rollback(); throw sqle; } } } } |
実行結果
DUAL表のDUMMY値が更新されます。
サンプルの解説
基本的には、前回のプリペアードステートメントによるSELECTの発行と変わりません。
更新系SQLの場合、PreparedStatement#executeUpdate()により、SQLを発行します。
返り値は、更新件数になります。
また、Connection#setAutoCommit(boolean)で、オートコミットの設定を行います。
デフォルトでは、「オートコミットしてしまう」ので、トランザクションになりません。
データベースを利用している以上、トランザクションを使わなければ意味がないので、必ずfalseに設定して、トランザクションを利用しましょう。
PreparedStatementでデータを取得するには?
PreparedStatementでSELECTを発行する方法は、こちらを見てください。
PreparedStatementでセーブポイントを利用するには?
PreparedStatementでセーブポイントを利用する方法は、こちらを見てください。