转账案例
数据库操作,事务实现
开启事务
关闭事务
回滚
需要在MySql中创建对应的表
![数据库表格
package javaweb.com.JDBC;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Shiwu {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt1 = null;
PreparedStatement pstmt2 = null;
try {
conn = JdbcUtilsDemo.getConnection();
// 开启事务
conn.setAutoCommit(false);
String sql1 = "update student set balance = balance - ? where id = ?";
String sql2 = "update student set balance = balance + ? where id = ?";
// 创建prepareStatement对象
pstmt1 = conn.prepareStatement(sql1);
pstmt2 = conn.prepareStatement(sql2);
// 赋值
pstmt1.setInt(1,500);
pstmt1.setInt(2,1);
pstmt2.setInt(1,500);
pstmt2.setInt(2,3);
// 执行sql
pstmt1.executeUpdate();
// int i =3/0;
pstmt2.executeUpdate();
// 结束事务
conn.commit();
} catch (SQLException throwables) {
try {
conn.rollback();
} catch (SQLException e) {
e.printStackTrace();
}
throwables.printStackTrace();
}finally {
JdbcUtilsDemo.close(pstmt1,conn);
JdbcUtilsDemo.close(pstmt2,null);
}
}
}