자바 트 랜 잭 션 처리 클래스

3736 단어 자바sqlmysqljdbcsun
Mysql 5 는 사물 처리 기능 을 잘 지원 합 니 다.하지만 이 기능 을 지원 하 는 것 은 두 가지 표 유형 뿐이다.
 
각각 BDB, InnoDB 다.
 
먼저 키 스 라 는 테이블 을 만 들 고, 데 이 터 는 id (int), name (varchar), pop (varchar) 입 니 다. \
 
다음은 원본 코드 입 니 다.
 
import java.sql.*;

public class TestCommit{
    public static void main(String args[]){
    Connection conn=null;
    try{
       Class.forName("com.mysql.jdbc.Driver");
       String url="jdbc:mysql://localhost:3306/kiss";
       conn=DriverManager.getConnection(url,"username","password");
       boolean autoCommit=conn.getAutoCommit();
       //        
       conn.setAutoCommit(false);
       Statement stmt=conn.createStatement();
       stmt.executeUpdate("insert into sun values(15,'Hello','Beijing')");
       stmt.executeUpdate("insert into sun values(16,'Hi','shanghai')");
       ResultSet rs=stmt.executeQuery("select * from sun");
       while(rs.next()){
            System.out.print("DeptNo:"+rs.getInt(1));
            System.out.print("\tDeptName:"+rs.getString(2));
            System.out.println("\tLOC:"+rs.getString(3));
}   
//    
    conn.commit();
//         
    conn.setAutoCommit(autoCommit);
    stmt.close();
}catch(Exception e){
    System.out.println("    !!!    !!!");
    try{
        //  、      
        conn.rollback();
    }catch(Exception e1){
      e1.printStackTrace();
    }
}finally{
   try{
         if(conn!=null){
            conn.close();
         }
   }catch(Exception e1){
     e1.printStackTrace();
    }
   }
    }
}

 
첫 번 째 클래스 를 실행 합 니 다. id 가 충돌 하지 않 으 면 데 이 터 를 순조롭게 삽입 할 수 있 습 니 다. 두 번 째 삽입, id 충돌 은 스크롤 백 을 실현 합 니 다.
 
다음은 부분 스크롤 백:
import java.sql.*;

public class TestSavepoint{
    public static void main(String args[]){
    Connection conn=null;
    try{
       Class.forName("com.mysql.jdbc.Driver");
       String url="jdbc:mysql://localhost:3306/kiss";
       conn=DriverManager.getConnection(url,"username","password");
       boolean autoCommit=conn.getAutoCommit();
       //        
       conn.setAutoCommit(false);
       Statement stmt=conn.createStatement();
       stmt.executeUpdate("insert into sun values(21,'Hello','Beijing')");
       stmt.executeUpdate("insert into sun values(22,'Hi','shanghai')");
       Savepoint sp1=conn.setSavepoint("p1");
       stmt.executeUpdate("insert into sun values(25,'shiyang','xingtai')");
       Savepoint sp2=conn.setSavepoint("p2");
       stmt.executeUpdate("insert into sun values(60,'shiyang','baoding')");
       ResultSet rs=stmt.executeQuery("select avg(id) from sun");
       rs.next();
       double avg_id=rs.getDouble(1);
       if(avg_id>100){
         conn.rollback(sp1);
       }else if(avg_id>30){
         conn.rollback(sp2);
       }
       conn.commit();
       rs=stmt.executeQuery("select * from sun");
       while(rs.next()){
            System.out.print(rs.getInt(1));
            System.out.print("\t"+rs.getString(2).trim());
            System.out.println("\t"+rs.getString(3));
}   
rs.close();
stmt.close();
    }catch(Exception e){
      System.out.println("Failure.rollback!!!");
   try{
       conn.rollback();
   }catch(Exception e1){
     e1.printStackTrace();
    }
    e.printStackTrace();
   }finally{
     try{
       if(conn!=null){
         conn.close();
       }
     }catch(Exception e1){
       e1.printStackTrace();
     }
   }
    }
}

 

좋은 웹페이지 즐겨찾기