JDBC连接的事务支持由Connection对象提供,且默认自动提交,即默认事务是关闭的状态。也就是说,SQL语句执行将会立即提交至数据库,永久生效。
JDBC中关于事务的 *** 作:
conn.setautoCommit(false); //关闭自动提交,开启事务/*下面俩需要在开启事务之后才能使用*/conn.commit(); //提交事务conn.rollback(); //回滚事务
需要注意的是:当遇到一个未处理的sqlException
的异常时,系统会非正常退出,事务会自动回滚。但如果显式捕捉该异常,则需要显式地回滚事务。
Java7增强的try语句的功能,保证那些实现Closeable接口的实现类能够自动关闭资源,不用显示的finally关闭资源。
细节可参考参考:JDK7的try-with-resource方式的使用
package cn.my.jdbcTransaction;import cn.my.jdbcPra.util.JDBCUtils;import java.sql.Connection;import java.sql.PreparedStatement;/** * @auther Summerday * JDBC的事务支持 */public class JDBCDemo { public static voID main(String[] args) { //获取连接 try (Connection conn = JDBCUtils.getConnection()) { //关闭自动默认提交,开启事务 conn.setautoCommit(false); //定义sql //-500 String sql1 = "update account set balance = balance - ? where ID = ?"; //+500 String sql2 = "update account set balance = balance + ? where ID = ?"; //执行sql对象的prs try (PreparedStatement prs1 = conn.prepareStatement(sql1); PreparedStatement prs2 = conn.prepareStatement(sql2)) { //设置参数 prs1.setDouble(1,500); prs1.setInt(2,1); prs2.setDouble(1,500); prs2.setInt(2,2); //执行sql1语句 prs1.executeUpdate(); //执行sql2语句 prs2.executeUpdate(); } catch (Exception e) { System.out.println("roll back"); conn.rollback(); } //提交事务 conn.commit(); System.out.println("commit!"); } catch (Exception e) { e.printstacktrace(); } }}
总结 以上是内存溢出为你收集整理的JDBC事务支持及try-with-resources全部内容,希望文章能够帮你解决JDBC事务支持及try-with-resources所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)