Skip to main content

Transaction Management in JDBC | JDBC Tutorial

 

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