• jdbc 事务


     1.当Jdbc程序向数据库获得一个Connection对象时,默认情况下这个Connection对象会自动向数据库提交在它上面发送的SQL语句。

    2.如果想让多条sql语句,共用一个事物,则需要关闭jdbc默认的事务提交,

    设置事务的提交方式为非自动提交:

       conn.setAutoCommit(false);

    Connection con =null;
    
         Statement st=null;
    
         ResultSet rs=null;
    
        PreparedStatement ps=null;
    
    publicvoid startTransaction(){
    
              
    
                  con = DBCManager.getConnect();//获取连接对象
    
                 
    
                 
    
                                try {
    
                      //设置事务的提交方式为非自动提交:
    
                  con.setAutoCommit(false);
    
                  //将需要添加事务的代码一同放入try,catch块中
    
     
    
                      //创建执行语句
    
                      String sql ="delete from me where id = 7";
    
                      String sql1 = "update me set name ='chengong' ,age ='34' where id =4";
    
                      //分别执行事务
    
                      ps = con.prepareStatement(sql);
    
                      ps.executeUpdate();
    
                      ps = con.prepareStatement(sql1);
    
                      ps.executeUpdate();
    
                      
    
                      //在try块内添加事务的提交操作,表示操作无异常,提交事务。
    
     
    
                      con.commit();
    
                     
    
                  } catch (SQLException e) {
    
                  try {
    
                      //.在catch块内添加回滚事务,表示操作出现异常,撤销事务:
    
                      con.rollback();
    
                  } catch (SQLException e1) {
    
                      // TODO Auto-generatedcatch block
    
                      e1.printStackTrace();
    
                  }
    
                      e.printStackTrace();
    
                  }f
    1)关闭自动提交事务。通过设置连接的自动提交事务属性为false,如下:
    
    Connection conn = DriverManager.getConnection("连接URL", "用户名", "密码");
    //关闭自动提交事务
    conn.setAutoCommit(false); 
    (2)如果执行顺利,提交事务;一旦发生异常,回滚(rollback)事务,如下:
    
    try{
        conn.setAutoCommit(false);     //关闭自动提交事务
        stmt = conn.createStatement();    //创建会话
        stmt.executeUpdate("sql语句");
        conn.commit();      //提交事务
    }catch(Exception e)
    {
        e.printStackTrace();
        conn.rollback();    //回滚事务    
    }
      
    
    (3)关闭连接,如下:
    
    finally{
        if(stmt != null)
            stmt.close();
        if(conn != null)
            conn.close();
    }
  • 相关阅读:
    C89:论内存泄漏
    C++03:模板
    C++的STL(标准模板库)系列:容器——string容器
    C++03:论类的友元函数和内联函数
    C++03:论类的运算符重载
    Windows开发:网络编程基础
    Windows开发:论文件和权限
    C89:头文件
    C89:论符号
    纪录片(深度好片)
  • 原文地址:https://www.cnblogs.com/panxuejun/p/5924179.html
Copyright © 2020-2023  润新知