다연이네

[days06] 자바에서 트랜잭션 처리 본문

JDBC

[days06] 자바에서 트랜잭션 처리

 다연  2020. 11. 30. 18:20
반응형
package days06;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;

import com.util.DBConn;

public class Ex04 {

   public static void main(String[] args) {
      // 
      String sql ="{call UP_INSERTDEPT(?,?,?) }";

      Connection con = null;
      CallableStatement cstmt = null;
      
      con = DBConn.getConnection();
      
      try {
         // 자동으로 커밋하는 설정을 수정
         con.setAutoCommit(false);
         
         cstmt = con.prepareCall(sql);
         //(?,?,?)
         cstmt.setInt(1,90);
         cstmt.setString(2,"QC");
         cstmt.setString(3,"SEOUL");
         
         int rowCount = cstmt.executeUpdate();
         
         if( rowCount == 1 ) {
            System.out.println("1. 부서 추가 완료");
         }//
         
         
         
         //복붙한거 
         cstmt = con.prepareCall(sql);
         //(?,?,?)
         cstmt.setInt(1,90);       //오류.. pk제약조건 중복..(pk가 같아서 이거는 추가가 안됨 )
         cstmt.setString(2,"QC2");
         cstmt.setString(3,"POHANG");
         
         rowCount = cstmt.executeUpdate();
         
         if( rowCount == 1 ) {
            System.out.println("2. 부서 추가 완료");
         }//
         
         con.commit(); //커밋
         
      
         
      } catch (SQLException e) {
         e.printStackTrace();
         try {
            con.rollback();//롤백
         } catch (SQLException e1) {
            e1.printStackTrace();
         } 
      }finally {
         try {
            cstmt.close();
         } catch (SQLException e) {
            e.printStackTrace();
         }
      }
      
      DBConn.close();

   }//main

}//class

QC든 QC2 안들어가진다. => 같이 롤백 됨

반응형
Comments