JDBC事务与保存点 JDBC简介(七)

 原文地址:

package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class MyTransactional { public static void main(String[] args) throws Exception{     String user = "root";     String password = "123456";     String url = "jdbc:mysql://localhost:3306/sampledb?useUnicode=true&characterEncoding=utf-8";     //2、获取连接对象    Connection conn = DriverManager.getConnection(url, user, password);     String sql = "delete from student where id='59'";     //2、获得sql语句执行对象    Statement stmt = conn.createStatement();     conn.setAutoCommit(false);     //3、执行并保存结果集    int rows = stmt.executeUpdate(sql);     System.out.println("受影响的行: "+rows);     conn.commit();     // conn.rollback();    conn.close();     stmt.close(); } }
复制代码
在执行前开启事务,conn.setAutoCommit(false);
注意:一定是执行前
只有开启事务和结束事务之间的执行才属于这个事务,如果像下面这样,可以认为是两个事务,前面一个自动提交了,然后开启了新的事务,然后回滚了新的事务
复制代码
    stmt.executeUpdate(sql);     conn.setAutoCommit(false);     conn.rollback();
复制代码
最终通过commit或者rollback 结束事务。
通常的一个使用形式为:
复制代码
try { con = DBConnection.getConnection(); //开启事务 con.setAutoCommit(false);  //处理业务逻辑  //提交事务 con.commit(); } catch (SQLException e) { e.printStackTrace(); //出现异常,回滚事务try { con.rollback(); System.out.println("JDBC Transaction rolled back successfully"); } catch (SQLException e1) { System.out.println("SQLException in rollback" + e.getMessage()); } }
复制代码

保存点

有的时候可能并不需要将一整个事务进行回滚,一
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信