以下ã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹å†…ã®è¤‡æ•°ã®ãƒ†ãƒ¼ãƒ–ルã«å¤‰æ›´ã‚’åŠ ãˆã€ä¸€éƒ¨ã®ãƒ†ãƒ¼ãƒ–ルã§ã®å¤‰æ›´ãŒæˆåŠŸã—ã€ä»–ã®ãƒ†ãƒ¼ãƒ–ルã§ã®å¤‰æ›´ãŒå¤±æ•—ã—ãŸå ´åˆã«ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’ãƒãƒ¼ãƒ«ãƒãƒƒã‚¯ã—ã€ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã™ã‚‹Javaã®ä¾‹ã§ã™ã€‚ãªãŠã€å…·ä½“çš„ãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚„ãƒ†ãƒ¼ãƒ–ãƒ«ã®æ§‹é€ ã«åˆã‚ã›ã¦å¤‰æ›´ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class MultiTableTransactionExample {
// ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹æŽ¥ç¶šæƒ…å ±
private static final String JDBC_URL = "jdbc:mysql://localhost:3306/your_database";
private static final String USER = "your_username";
private static final String PASSWORD = "your_password";
public static void main(String[] args) {
try (Connection connection = DriverManager.getConnection(JDBC_URL, USER, PASSWORD)) {
// トランザクション開始
connection.setAutoCommit(false);
try {
// テーブル1ã®å¤‰æ›´
updateTable1(connection);
// テーブル2ã®å¤‰æ›´
updateTable2(connection);
// ã™ã¹ã¦ã®å¤‰æ›´ãŒæˆåŠŸã—ãŸå ´åˆã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’コミット
connection.commit();
System.out.println("ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãŒæ£å¸¸ã«å®Œäº†ã—ã¾ã—ãŸã€‚");
} catch (SQLException e) {
// 何ã‹ã—らã®ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸå ´åˆã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’ãƒãƒ¼ãƒ«ãƒãƒƒã‚¯
connection.rollback();
System.err.println("トランザクションãŒãƒãƒ¼ãƒ«ãƒãƒƒã‚¯ã•れã¾ã—ãŸã€‚エラー: " + e.getMessage());
}
} catch (SQLException e) {
e.printStackTrace();
}
}
private static void updateTable1(Connection connection) throws SQLException {
// テーブル1ã®å¤‰æ›´å‡¦ç†
String sql = "UPDATE table1 SET column1 = ? WHERE id = ?";
try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
// パラメータをセット
preparedStatement.setString(1, "new_value");
preparedStatement.setInt(2, 1);
// 実行
preparedStatement.executeUpdate();
} catch (SQLException e) {
// テーブル1ã®å¤‰æ›´ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸå ´åˆ
throw new SQLException("テーブル1ã®å¤‰æ›´ä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚", e);
}
}
private static void updateTable2(Connection connection) throws SQLException {
// テーブル2ã®å¤‰æ›´å‡¦ç†
String sql = "UPDATE table2 SET column1 = ? WHERE id = ?";
try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
// パラメータをセット
preparedStatement.setString(1, "new_value");
preparedStatement.setInt(2, 1);
// 実行(ã“ã“ã§ã¯æ•¢ãˆã¦ã‚¨ãƒ©ãƒ¼ã‚’発生ã•ã›ã‚‹ï¼‰
preparedStatement.executeUpdate();
} catch (SQLException e) {
// テーブル2ã®å¤‰æ›´ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸå ´åˆ
throw new SQLException("テーブル2ã®å¤‰æ›´ä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚", e);
}
}
}
ã“ã®ä¾‹ã§ã¯ã€updateTable1メソッドã¨updateTable2メソッドãŒãれãžã‚Œç•°ãªã‚‹ãƒ†ãƒ¼ãƒ–ルã®å¤‰æ›´ã‚’担当ã—ã¦ã„ã¾ã™ã€‚トランザクション内ã§ã®ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿæ™‚ã«ã¯ã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å…¨ä½“ã‚’ãƒãƒ¼ãƒ«ãƒãƒƒã‚¯ã—ã¦ã„ã¾ã™ã€‚
「019 例外ã¨ä¾‹å¤–処ç†ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント