一:事务的四大特性:
1:原子性(最小的操作单位,不可以在分割的)
2:一致性(事务的结果是保留不变的)
3:隔离性(中间状态对其它事务是不可见的,事务之间是相互独立的)
4:持久性 (已完成的事务结果上持久的)
二:事务的三种基本操作
1:connection.setAutoCommit(false);取消事务的自动提交
2:connection.commit() :事物的提交
3:connection.rollback() 事务的回滚
三:事务在程序中的常见使用:
在一个方法中,同时对于多个表进行增,删,改的操作,需要利用到事务。1:首先在执行sql操作之前,conn.setAutoCommit(false);//不允许自动提交(因为它默认是自动提交的);2在执行sql的时候遇到操作失败conn.rollback();//设置回滚 ;3在执行完所有的sql操作后,connection.commit() //事务提交
实例:
重点内容
public void deleteOrder(){
User user = getUserBySession();
user.setMsg(“”);
//数据库链接
Connection conn = null;
try {
//获取数据库对象
conn = DBTools.getConnection();
//不允许自动提交重点内容
conn.setAutoCommit(false);
//获取采购单sql操作对象
operationInfo.createObj(“DCMS_orders”, “select”);
//获取采购单
String trueOrderId = Global.DES_PLUS.decrypt(orderId);
Order order = orderDAO.getOrder(conn, trueOrderId, operationInfo);
if(order == null){
conn.rollback();重点内容
outJson(“{\”result\”:\”fail\”,\”msg\”:\”需删除的采购单申请不存在!\”}”);
return;
}
if(order.getStatus() != 1){
conn.rollback();
outJson(“{\”result\”:\”fail\”,\”msg\”:\”该状态申请不得删除!\”}”);
return;
}
if(!order.getApplyNo().equals(user.getUserId())){
conn.rollback();
outJson(“{\”result\”:\”fail\”,\”msg\”:\”没有权限删除该采购申请!\”}”);
return;
}
//进行删除
order.setOrderId(trueOrderId);
operationInfo.createObj(“DCMS_orders”, “delete”);
int num = orderDAO.operationOrder(conn, order, operationInfo);
if(num == 1){
log(conn, “进行删除”, order);
conn.commit();重点内容
outJson(“{\”result\”:\”success\”,\”msg\”:\”删除采购申请成功\”}”);
return;
}else{
conn.rollback();
outJson(“{\”result\”:\”success\”,\”msg\”:\”删除采购申请信息失败!\”}”);
return;
}
} catch (Exception e) {
// TODO Auto-generated catch block
try {
conn.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
outJson(“{\”result\”:\”success\”,\”msg\”:\”系统正忙,请稍后再试(deleteOrder)\”}”);
return;
} finally{
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}