做网站需要的照片,c语言自学免费网站,阿里云上能建设自己的企业网站,深圳做网站比较文章目录事务定义操作步骤示例代码事务定义
一个包含多个步骤的业务操作。如果这个业务操作被事务管理#xff0c;则这多个步骤要么同时成功#xff0c;要么同时失败。
操作步骤
使用 Connection 对象来管理事务。
1.开启事务 2.提交事务 3.回滚事务
开启事务: setAutoC…
文章目录事务定义操作步骤示例代码事务定义
一个包含多个步骤的业务操作。如果这个业务操作被事务管理则这多个步骤要么同时成功要么同时失败。
操作步骤
使用 Connection 对象来管理事务。
1.开启事务 2.提交事务 3.回滚事务
开启事务: setAutoCommit(boolean autoCommit)调用该方法设置参数为false即开启事务 在执行 SQL 语句前开启事务
提交事务: commit() 当所有 SQL 执行完后提交事务
回滚事务: rollback() 出现异常后回滚事务即在 catch 中回滚事务
示例代码
package priv.lwx.javaex.jdbc;import priv.lwx.javaex.jdbc.util.ConnectionUtils2;import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;/*** description** author liaowenxiong* date 2021/11/17 17:52*/public class JDBCDemo12 {public static void main(String[] args) {// 定义sqlString sql1 update account set balance balance - ? where id ?;String sql2 update account set balance balance ? where id ?;// 获取连接对象Connection conn ConnectionUtils2.getConnection();PreparedStatement pstmp1 null;PreparedStatement pstmp2 null;try {// 开启事务conn.setAutoCommit(false);// 获取预编译语句对象pstmp1 conn.prepareStatement(sql1);pstmp2 conn.prepareStatement(sql2);// 给sql语句的参数赋值pstmp1.setBigDecimal(1, BigDecimal.valueOf(500));pstmp1.setInt(2, 1);pstmp2.setBigDecimal(1, BigDecimal.valueOf(500));pstmp2.setInt(2, 2);// 执行SQL语句pstmp1.executeUpdate();// int i 1/0;pstmp2.executeUpdate();// 提交事务conn.commit();} catch (SQLException e) {// 有异常回滚事务try {conn.rollback();} catch (SQLException throwables) {throwables.printStackTrace();}e.printStackTrace();} finally {ConnectionUtils2.close(conn, pstmp1, pstmp2);}}
}