操作:
1.开启事物
2.提交事物
3.回滚事物
使用Connection对象来管理事物
开启事务:setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事务
提交事务:commit()
回滚事务:rollback()
开启事物:setAutioCommit(boolean autoCommit)
在sql之前开启事物
提交事物:commit()
当所有sql都执行完提交事物
回滚事物:rollback()
在catch中回滚事物
例如:
public class Demo01 {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt1 = null;
PreparedStatement pstmt2 = null;
try {
conn = JDBCUtils.getConnection();
conn.setAutoCommit(false);
String sql1 = "update account set balance =balance-? where id=?";
String sql2 = "update account set balance =balance+? where id=?";
pstmt1 = conn.prepareStatement(sql1);
pstmt2 = conn.prepareStatement(sql2);
pstmt1.setDouble(1,500);
pstmt2.setDouble(1,500);
pstmt1.setInt(2,1);
pstmt2.setInt(2,2);
pstmt1.executeUpdate();
pstmt2.executeUpdate();
conn.commit();
System.out.println("修改完成");
} catch (Exception e) {
try {
conn.rollback();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
e.printStackTrace();
} finally {
JDBCUtils.close(conn, pstmt1);
JDBCUtils.close(null, pstmt2);
}
}
}