Jdbc Transaction

PHOTO EMBED

Fri Nov 15 2024 19:08:56 GMT+0000 (Coordinated Universal Time)

Saved by @login123

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class JdbcTransactionExample {

    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pstmt1 = null;
        PreparedStatement pstmt2 = null;

        try {
            // Step 1: Establish database connection
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bank", "root", "ramesh");

          
            conn.setAutoCommit(false);

         
            String sql1 = "UPDATE bank_account SET balance = balance - ? WHERE account_id = ?";
            pstmt1 = conn.prepareStatement(sql1);
            pstmt1.setDouble(1, 1000); 
            pstmt1.setInt(2, 1);

            String sql2 = "UPDATE bank_account SET balance = balance + ? WHERE account_id = ?";
            pstmt2 = conn.prepareStatement(sql2);
            pstmt2.setDouble(1, 1000); 
            pstmt2.setInt(2, 2);

         
            pstmt1.executeUpdate();
            pstmt2.executeUpdate();

       
            conn.commit();
            System.out.println("Transaction committed successfully");

        } catch (SQLException e) {
          
            if (conn != null) {
                try {
                    conn.rollback();
                    System.out.println("Transaction rolled back due to error");
                } catch (SQLException rollbackEx) {
                    rollbackEx.printStackTrace();
                }
            }
            e.printStackTrace();
        } finally {
            
            try {
                if (pstmt1 != null) pstmt1.close();
                if (pstmt2 != null) pstmt2.close();
                if (conn != null) conn.close();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }
}
content_copyCOPY