「Java」トランザクション(setAutoCommit、commit、rollback)を利用してMySQLに接続する方法
書式
1.setAutoCommit(boolean autoCommit)
この接続の自動コミット・モードを指定された状態に設定します。
autoCommit – 自動コミット・モードを有効にする場合はtrue、無効にする場合はfalse
2.void commit() throws SQLException
直前のコミット/ロールバック以降に行われた変更をすべて永続的なものにし、
このConnectionオブジェクトが現在保持するデータベース・ロックをすべて解除します
3.void rollback() throws SQLException
現在のトランザクションにおけるすべての変更を取り消し、
現在このConnectionオブジェクトが保持しているすべてのデータベース・ロックを解除します。
使用例
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class SqlConnTract { public static void main(String[] args) { try (Connection conn = DriverManager.getConnection( "jdbc:mysql://xxx/testdb?serverTimezone=JST&useUnicode=true&characterEncoding=UTF-8&useSSL=true", "root", "667788")) { conn.setAutoCommit(false); try(PreparedStatement pst = conn.prepareStatement( "INSERT INTO usertbl (useno, userame, city, age) VALUES (?, ?, ?, ?)"); pst.setString(1, "20220722"); pst.setString(2, "山田 太郎"); pst.setString(3, "東京品川区"); pst.setInt(4, 25); pst.executeUpdate(); conn.commit(); } catch (SQLException e) { conn.rollback(); System.out.println("例外が発生しました" + e.getMessage()); } } catch (Exception e) { e.printStackTrace(); } } }