「Java」トランザクション(setAutoCommit、commit、rollback)を利用してMySQLに接続する方法

書式
1.setAutoCommit(boolean autoCommit)
この接続の自動コミット・モードを指定された状態に設定します。
autoCommit – 自動コミット・モードを有効にする場合はtrue、無効にする場合はfalse
2.void commit() throws SQLException
直前のコミット/ロールバック以降に行われた変更をすべて永続的なものにし、
このConnectionオブジェクトが現在保持するデータベース・ロックをすべて解除します
3.void rollback() throws SQLException
現在のトランザクションにおけるすべての変更を取り消し、
現在このConnectionオブジェクトが保持しているすべてのデータベース・ロックを解除します。

使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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();
}
}
}
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(); } } }
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