package cn.lnu.demo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Savepoint;
import cn.lnu.utils.JdbcUtils;
public class Demo2 {
/**
*ʵ��a�û���bת100Ԫ,����sql�������ݿ�ʹ������Ҫôȫ����Ҫôȫ����
*����ع���*
* @throws SQLException
* �������
* start transaction ��������
* ......
* ......
* [rollback]
* commit �ύ����ֻҪû��commit�����ݿ�ͻ��Զ��ع�sql���������ݿ��Ӱ�죬�ָ�������ִ��ǰ��״̬
*/
public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
Connection conn=null;
PreparedStatement st=null;
ResultSet rs=null;
Savepoint sp=null;//java�д���ع���Ķ���
try{
conn=JdbcUtils.getConnection();//��������������Զ��ύ�ģ�Ҫ����������Ҫ��������������������Զ��ύ������������
conn.setAutoCommit(false);//������������ݿ������������Զ��ύ���൱�����ݿ��е�start transaction�����������
String sql1="update account set money=money-1000 where name='aaa'";
String sql2="update account set money=money+1000 where name='bbb'";
String sql3="update account set money=money+1000 where name='ccc'";
st=conn.prepareStatement(sql1);
st.executeUpdate();
sp=conn.setSavepoint();//���ûع���
st=conn.prepareStatement(sql2);
st.executeUpdate();
int x=1/0;//�쳣
st=conn.prepareStatement(sql3);
st.executeUpdate();
conn.commit();
}catch(Exception e){
e.printStackTrace();
conn.rollback(sp);
conn.commit();//�ֶ��ع���һ��Ҫ��ס�ύ����
}finally{
JdbcUtils.release(conn, st, rs);
}
}
}