java里调用mysql的事务怎么写?

2024-11-28 12:36:20
推荐回答(2个)
回答(1):

如果是JDBC其实很简单,就是先setAutoCommit(false);然后把你的数据库操作语句都执行完了,再手动调用commit方法就行了,所谓的事务其实原则上很简单,尤其是关系型数据库,说白了就是所有的SQL成功了才提交,不成功就rollback仅此而已

回答(2):

@SuppressWarnings("resource")
public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
Connection con = null;
PreparedStatement pstm= null;
try {
//获取自定义方法 获取连接
con = GetMyConnection.getConnection();
//要开启事务 设置手动提交 false 不开启 mysql他默认是自动提交
con.setAutoCommit(false);
///**转账功能*/
//UPDATE tb_account SET total= total-4000 WHERE id = 1;
//UPDATE tb_account SET total= total+4000 WHERE id = 2;
String sql = "UPDATE tb_account SET total= total-4000 WHERE id = 1;";
pstm= con.prepareStatement(sql);
pstm.executeUpdate();

// 应为开启了 事务 出错 会回滚 不会成功
int a = 8 / 0 ;

String sql2 = "UPDATE tb_account SET total= total+4000 WHERE id = 2";
pstm= con.prepareStatement(sql2);
pstm.executeUpdate();

//没有问题 提交
con.commit();
} catch (SQLException e) {
// TODO Auto-generated catch block.
//出错会回滚
con.rollback();
e.printStackTrace();
}finally{
//这是自己写的关闭资源的方法
GetMyConnection.close(null, pstm, con);
}
}