java中jdbc事务管理

来源:互联网 发布:郭敬明 陈学冬 知乎 编辑:程序博客网 时间:2024/05/20 14:16

       事务的好处就是保证多表操纵的一致性。事务具有原子性,一个事务内的操作要么全部执行成功,要么全部执行失败,默认情况下,JDBC对数据库的操作是自动提交的。我们通过conn.setAutoCommit(false);可以设置为自动提交,如果其中有一步操作失败,可以使用RollBack进行回滚。

      下面的例子先执行插入,后执行删除,如果中间有异常,可以使用rollback进行回滚

     

//创建连接public static  Connection createCon(){try {Class.forName(driver);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} //classLoader,加载对应驱动        try {conn = (Connection) DriverManager.getConnection(url, username, pwd);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}        return conn;}

    

Connection  conn=dao.createCon();try {conn.setAutoCommit(false);//禁止JDBC自动提交//添加操作String addsql="INSERT skus (skuname,skucode,categoryid) VALUES (?,?,?) ";try {PreparedStatement pst=(PreparedStatement)conn.prepareStatement(addsql);pst.setString(1, "短裤");pst.setString(2, "00008");pst.setShort(3,(short) 6);pst.executeUpdate();pst.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();};    //制造异常      String ss="aa";      Integer.parseInt(ss);                          //删除操作String sql="DELETE FROM skus WHERE skucode='00005' ";try {PreparedStatement pst=(PreparedStatement)conn.prepareStatement(sql);pst.executeUpdate();pst.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();};conn.commit();//手动提交} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();try {conn.rollback();} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}

0 0
原创粉丝点击