1. Commit
Class UtiDb
Class BusPro
package JavaJDBC.Chap09.sec01;
import JavaJDBC.util.UtiDb;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/**
* Created by linux_ccmj on 16-5-17.
*/
public class BusPro {
// UtiDb
private static UtiDb utiDb = new UtiDb();
// Out account fun
private static void outAccFun(Connection con, String accNam, int accNum) throws Exception{
// sql command string
String strComSql = "update t_account set accountBalance = accountBalance-? where accountName =?";
// prepared statement
PreparedStatement preSta = con.prepareStatement(strComSql);
preSta.setInt(1, accNum);
preSta.setString(2, accNam);
preSta.executeUpdate();
// close prepared statement
preSta.close();
}
// In account fun
private static void inAccFun(Connection con, String accNam, int accNum) throws Exception{
// sql command string
String strComSql = "update t_account set accountBalance = accountBalance+? where accountName =?";
// prepared statement
PreparedStatement preSta = con.prepareStatement(strComSql);
preSta.setInt(1, accNum);
preSta.setString(2, accNam);
preSta.executeUpdate();
// close prepared statement
preSta.close();
}
// Test main
public static void main(String[] args){
// Connection
Connection con = null;
try {
con = utiDb.getConFun();
con.setAutoCommit(false);
// Out and in fun
outAccFun(con, "张三", 500);
System.out.println("张三转出500");
inAccFun(con, "李四", 500);
System.out.println("李四转入500");
// Close connection
} catch (Exception e) {
try {
con.rollback();
} catch (Exception e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
finally {
try {
con.commit();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
2. Save Point
Class UtiDb
Class BusPro_SetPoi
package JavaJDBC.Chap09.sec02;
import JavaJDBC.util.UtiDb;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Savepoint;
/**
* Created by linux_ccmj on 16-5-17.
*/
public class BusPro_SetPoi {
// UtiDb
private static UtiDb utiDb = new UtiDb();
// Out account fun
private static void outAccFun(Connection con, String accNam, int accNum) throws Exception{
// sql command string
String strComSql = "update t_account set accountBalance = accountBalance-? where accountName =?";
// prepared statement
PreparedStatement preSta = con.prepareStatement(strComSql);
preSta.setInt(1, accNum);
preSta.setString(2, accNam);
preSta.executeUpdate();
// close prepared statement
preSta.close();
}
// In account fun
private static void inAccFun(Connection con, String accNam, int accNum) throws Exception{
// sql command string
String strComSql = "update t_account set accountBalance = accountBalance+? where accountName =?";
// prepared statement
PreparedStatement preSta = con.prepareStatement(strComSql);
preSta.setInt(1, accNum);
preSta.setString(2, accNam);
preSta.executeUpdate();
// close prepared statement
preSta.close();
}
// Test main
public static void main(String[] args){
// Connection
Connection con = null;
Savepoint savPoi = null;
try {
con = utiDb.getConFun();
con.setAutoCommit(false);
// Out and in fun
outAccFun(con, "张三", 500);
savPoi=con.setSavepoint(); // Set save point
System.out.println("张三转出500");
inAccFun(con, "李四", 500);
System.out.println("李四转入500");
// Close connection
} catch (Exception e) {
try {
con.rollback(savPoi); // If there is exception, it roll back at save point
} catch (Exception e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
finally {
try {
con.commit();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}