Transaction

Transaction in JDBC

  • Transaction is a group of SQL query which are executed as a unit so that either all of them executed or none of them executed
  •  Transaction Help us to achieve Data consistency.

Steps To obtain Transaction

Step 1: Begin transaction by disabling auto commit mode.

con.setautocommit(false);

step 2: Issue set of SQL query

step 3:  If no error then Commit Transaction

con.commit();

step 4:  If error then Rollback the Transaction.

Scenario:

Suppose we are issuing three query which are inserting value into three different table now suppose after issuing two query some Exception occur so we have to Rollback of Previously Executed query using Transaction Concept.

[pastacode lang=”java” manual=”package%20com.spy.javaforlearn%3B%0A%0Aimport%20java.sql.Connection%3B%0Aimport%20java.sql.DriverManager%3B%0Aimport%20java.sql.PreparedStatement%3B%0Aimport%20java.sql.SQLException%3B%0A%0Apublic%20class%20TransactionExample%20%0A%7B%0Apublic%20static%20void%20main(String%5B%5D%20args)%0A%7B%0A%09Connection%20con%3Dnull%3B%0A%09PreparedStatement%20pstmt1%3Dnull%3B%0A%09PreparedStatement%20pstmt2%3Dnull%3B%0A%09PreparedStatement%20pstmt3%3Dnull%3B%0A%09%0A%09try%20%0A%09%7B%0A%09%09%0A%09%20%20%20%20Class.forName(%22com.mysql.jdbc.Driver%22).newInstance()%3B%0A%09%09%0A%09%0A%09%20%20%20%20String%20db%3D%22jdbc%3Amysql%3A%2F%2Flocalhost%3A3306%2Ftest%3Fuser%3Droot%26password%3Droot%22%3B%0A%09%20%20%20%20con%3DDriverManager.getConnection(db)%3B%0A%09%20%20%20%20%0A%09%20%20%20%20%0A%09%20%20%20%20%2F*%0A%09%20%20%20%20%20*%201.begin%20transaction%20by%20setting%20con.autocmmit(false)%20method%0A%09%20%20%20%20%20*%2F%0A%09%09%20%0A%09%20%20%20con.setAutoCommit(false)%3B%0A%09%20%20%20%20%0A%09%20%20%20%20%0A%09%20%20%20%20%2F*%0A%09%20%20%20%20%20*%202.issue%20set%20of%20sql%20query%0A%09%20%20%20%20%20*%2F%0A%09%20%20%20%20%0A%09%20%20%20%20String%20query1%3D%22insert%20into%20student_detail%20values(5%2C’sahil’%2C’desai’)%22%3B%0A%09%20%20%20%20pstmt1%3Dcon.prepareStatement(query1)%3B%0A%09%20%20%20%20%0A%09%20%20%20%20int%20count1%3D%20pstmt1.executeUpdate()%3B%0A%09%20%20%20%20%0A%09%20%20%20%20System.out.println(%22rows%20affected%20in%20student_detail%20%22%2Bcount1)%3B%0A%09%20%20%20%20%0A%09%0A%09%20%20%20%20%0A%09%20%20%20%20%0A%09%20%20%20%20String%20query2%3D%22insert%20into%20User_credential%20values(5%2C’sahil’%2C’abc5′)%22%3B%0A%09%20%20%20%20pstmt2%3Dcon.prepareStatement(query2)%3B%0A%09%20%20%20%0A%09%20%20%20%20int%20count2%3D%20pstmt2.executeUpdate()%3B%0A%09%20%20%20%20%0A%09%20%20%20%20System.out.println(%22rows%20affected%20in%20user_credential%20%22%2Bcount2)%3B%0A%09%20%20%20%20%0A%09%20%20%20%20%0A%09%20%20%20%0A%09%20%20%20%20int%20a%3D5%2F0%3B%20%20%2F%2F%20Exception%0A%09%20%20%20%20%20%20%20%0A%09%20%20%20%20%0A%09%20%20%20%20String%20query3%3D%22insert%20into%20contact_detail%20values(5%2C’352246′)%22%3B%0A%09%20%20%20%20pstmt3%3Dcon.prepareStatement(query3)%3B%20%20%20%0A%09%20%20%20%20%0A%09%20%20%20%20int%20count3%3D%20pstmt3.executeUpdate()%3B%0A%09%20%20%20%20%0A%09%20%20%20%20System.out.println(%22rows%20affected%20in%20Contact%20detail%20%22%2Bcount3)%3B%0A%09%20%20%20%20%0A%09%0A%20%20%20%20%20%20%20%20%20%20%20%20con.commit()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20System.out.println(%22profile%20successfully%20created%20%22)%3B%0A%09%20%20%20%20%0A%09%20%20%20%20%20%20%0A%09%7D%0A%09catch(Exception%20e)%0A%09%7B%0A%09%09System.out.println(%22Something%20Wrong%2C%20Please%20try%20again…%22)%3B%0A%09%09%0A%09%09try%20%0A%09%09%7B%0A%09%09%09con.rollback()%3B%0A%09%09%7D%20%0A%09%09catch%20(SQLException%20e1)%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%09%09%0A%09%09%09e1.printStackTrace()%3B%0A%09%09%7D%0A%09%09%0A%09%09System.out.println(%22unable%20to%20create%20profile%3A%22)%3B%0A%09%7D%0A%09%0A%09%0A%09finally%0A%09%7B%0A%09%09%0A%09%09try%20%7B%0A%09%09%09if(con!%3Dnull)%0A%09%09%09%7B%0A%09%09%09%09con.close()%3B%0A%09%09%09%7D%0A%09%09%09if(pstmt1!%3Dnull)%0A%09%09%09%7B%0A%09%09%09%09pstmt1.close()%3B%0A%09%09%09%7D%0A%09%09%09if(pstmt2!%3Dnull)%0A%09%09%09%7B%0A%09%09%09%09pstmt2.close()%3B%0A%09%09%09%7D%0A%09%09%09if(pstmt3!%3Dnull)%0A%09%09%09%7B%0A%09%09%09%09pstmt3.close()%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09catch%20(Exception%20e)%20%0A%09%09%7B%0A%09%09%09%0A%09%09%09e.printStackTrace()%3B%0A%09%09%7D%09%09%0A%09%20%20%7D%09%0A%09%7D%0A%7D” message=”Transaction in JDBC” highlight=”” provider=”manual”/]


output:

rows affected in student_detail1
rows affected in user_credential1
Something Wrong, Please try again...
unable to create profile:

Now If There is NO error Then Profile should Successfully create.

[pastacode lang=”java” manual=”package%20com.spy.javaforlearn%3B%0A%0Aimport%20java.sql.Connection%3B%0Aimport%20java.sql.DriverManager%3B%0Aimport%20java.sql.PreparedStatement%3B%0Aimport%20java.sql.SQLException%3B%0A%0Apublic%20class%20TransactionExample%20%0A%7B%0Apublic%20static%20void%20main(String%5B%5D%20args)%0A%7B%0A%09Connection%20con%3Dnull%3B%0A%09PreparedStatement%20pstmt1%3Dnull%3B%0A%09PreparedStatement%20pstmt2%3Dnull%3B%0A%09PreparedStatement%20pstmt3%3Dnull%3B%0A%09%0A%09try%20%0A%09%7B%0A%09%09%0A%09%09Class.forName(%22com.mysql.jdbc.Driver%22).newInstance()%3B%0A%09%09%0A%09%0A%09%20%20%20%20String%20db%3D%22jdbc%3Amysql%3A%2F%2Flocalhost%3A3306%2Ftest%3Fuser%3Droot%26password%3Droot%22%3B%0A%09%20%20%20%20con%3DDriverManager.getConnection(db)%3B%0A%09%20%20%20%20%0A%09%20%20%20%20%0A%09%20%20%20%20%2F*%0A%09%20%20%20%20%20*%201.begin%20transaction%20by%20setting%20con.autocmmit(false)%20method%0A%09%20%20%20%20%20*%2F%0A%09%20%20%20%20con.setAutoCommit(false)%3B%0A%09%20%20%20%20%0A%09%20%20%20%20%0A%09%20%20%20%20%2F*%0A%09%20%20%20%20%20*%202.issue%20set%20of%20sql%20query%0A%09%20%20%20%20%20*%2F%0A%09%20%20%20%20%0A%09%20%20%20%20String%20query1%3D%22insert%20into%20student_detail%20values(5%2C’sahil’%2C’desai’)%22%3B%0A%09%20%20%20%20pstmt1%3Dcon.prepareStatement(query1)%3B%0A%09%20%20%20%20%0A%09%20%20%20%20int%20count1%3D%20pstmt1.executeUpdate()%3B%0A%09%20%20%20%20%0A%09%20%20%20%20System.out.println(%22rows%20affected%20in%20student_detail%20%22%2Bcount1)%3B%0A%09%20%20%20%20%0A%09%0A%09%20%20%20%20%0A%09%20%20%20%20%0A%09%20%20%20%20String%20query2%3D%22insert%20into%20User_credential%20values(5%2C’sahil’%2C’abc5′)%22%3B%0A%09%20%20%20%20pstmt2%3Dcon.prepareStatement(query2)%3B%0A%09%20%20%20%0A%09%20%20%20%20int%20count2%3D%20pstmt2.executeUpdate()%3B%0A%09%20%20%20%20%0A%09%20%20%20%20System.out.println(%22rows%20affected%20in%20user_credential%20%22%2Bcount2)%3B%0A%09%20%20%20%20%0A%09%20%20%20%20%0A%09%20%20%20%0A%09%20%2F%2F%20%20%20int%20a%3D5%2F0%3B%0A%09%20%20%20%0A%09%20%20%20%20%0A%09%20%20%20%20%0A%09%20%20%20%20%0A%09%20%20%20%20String%20query3%3D%22insert%20into%20contact_detail%20values(5%2C’352246′)%22%3B%0A%09%20%20%20%20pstmt3%3Dcon.prepareStatement(query3)%3B%20%20%20%0A%09%20%20%20%20%0A%09%20%20%20%20int%20count3%3D%20pstmt3.executeUpdate()%3B%0A%09%20%20%20%20%0A%09%20%20%20%20System.out.println(%22rows%20affected%20in%20Contact%20detail%20%22%2Bcount3)%3B%0A%09%20%20%20%20%0A%09%0A%20%20%20%20%20%20%20%20%20con.commit()%3B%0A%20%20%20%20%20%20%20%20%20System.out.println(%22profile%20successfully%20created%20%22)%3B%0A%09%20%20%20%20%0A%09%20%20%20%20%0A%09%20%20%20%20%0A%09%20%20%20%20%0A%09%7D%0A%09catch(Exception%20e)%0A%09%7B%0A%09%09System.out.println(%22Something%20Wrong%2C%20Please%20try%20again…%22)%3B%0A%09%09%0A%09%09%0A%09%09%0A%09%09try%20%0A%09%09%7B%0A%09%09%09con.rollback()%3B%0A%09%09%7D%20%0A%09%09catch%20(SQLException%20e1)%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%09%09%0A%09%09%09e1.printStackTrace()%3B%0A%09%09%7D%0A%09%09%0A%09%09System.out.println(%22unable%20to%20create%20profile%3A%22)%3B%0A%09%20%20%20%20%7D%0A%09%0A%09%0A%09%20%20%20%20%20finally%0A%09%20%20%20%20%20%7B%0A%09%09%0A%09%09try%20%7B%0A%09%09%09if(con!%3Dnull)%0A%09%09%09%7B%0A%09%09%09%09con.close()%3B%0A%09%09%09%7D%0A%09%09%09if(pstmt1!%3Dnull)%0A%09%09%09%7B%0A%09%09%09%09pstmt1.close()%3B%0A%09%09%09%7D%0A%09%09%09if(pstmt2!%3Dnull)%0A%09%09%09%7B%0A%09%09%09%09pstmt2.close()%3B%0A%09%09%09%7D%0A%09%09%09if(pstmt3!%3Dnull)%0A%09%09%09%7B%0A%09%09%09%09pstmt3.close()%3B%0A%09%09%09%7D%0A%09%20%20%20%20%20%20%7D%09%09%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20catch%20(Exception%20e)%20%0A%09%09%7B%09%09%09%0A%09%09%09e.printStackTrace()%3B%0A%09%09%7D%09%09%09%0A%09%20%20%20%20%7D%09%0A%09%7D%0A%20%20%7D%0A” message=”JDBC Transaction” highlight=”” provider=”manual”/]

output:

rows affected in student_detail 1
rows affected in user_credential 1
rows affected in Contact detail 1
profile successfully created 

Now you can see Table data

student_detail
st-detail
Contact_detail
contact
user_credential
user_credential

Leave a Reply