Transaction Management in JDBC
For explanation watch video ::
Code::
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class OracleConn {
public static void main(String[] args) {
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String uname = "system";
String pwd = "tiger";
// take source account number and dest acc number from user
Scanner scn = new Scanner(System.in);
System.out.println("Enter source acc no: ");
long srcAcNo = scn.nextLong();
System.out.println("Enter dest acc no: ");
long destAcNo = scn.nextLong();
// take the amt to transfer
System.out.println("Enter amt to transfer: ");
long amt = scn.nextLong();
try (Connection con = DriverManager.getConnection(url, uname, pwd);
Statement st = con.createStatement();) {
// Begin Tx
if (con != null)
con.setAutoCommit(false);
if (st != null) {
// add queries to the batch (executing queries in the batch)
// for withdraw opeation
st.addBatch("update acc set balance=balance-" + amt + " where accno=" + srcAcNo);//1
// for deposite opeation
st.addBatch("update acc set balance=balance+" + amt + "where accno=" + destAcNo);//0
// execut the batch
int result[] = st.executeBatch();
//result = {1,1}
// process the results from TxMgmt
boolean flag = true;
for (int i = 0; i < result.length; ++i) {
if (result[i] == 0) {
flag = false;
break;
}
}
if (flag == true) {
con.commit(); // commit the Transaction
System.out.println("Tx Commited Money Transfered");
} else {
con.rollback(); // rollback the Transaction
System.out.println("Tx rolledback Money not Transfered");
}
}
} catch (SQLException se) {
System.out.println(se.getMessage());
se.printStackTrace();
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
Comments
Post a Comment