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