「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();
    }
  }
}

 

Java

Posted by arkgame