import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.PreparedStatement;
import com.util.DBConn;
//영화 예매 소스 짤 때 처럼 하나가 실행취소가 되면 전체가 롤백되는 소스
public class Test4 {
public static void main(String[] args) {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
Connection conn=DBConn.getConnection();
PreparedStatement pstmt=null;
String sql;
int id;
String name, tel, birth;
/*
* 프로그램에서 INSERT, UPDATE, DELETE를 하면
* 기본이 자동으로 COMMIT 되므로 원상태로 복원할 수 없다
*/
try{
System.out.print("번호?");
id=Integer.parseInt(br.readLine());
System.out.print("이름?");
name=br.readLine();
System.out.print("전화?");
tel=br.readLine();
System.out.print("생일?");
birth=br.readLine();
conn.setAutoCommit(false); // 이 소스의 핵심 명령어
//기본이 true이며 commit을 안해도 commit 됨
//false 이면 반드시 commit을 해야함
//demo1 테이블에 추가
sql="INSERT INTO demo1(id, name) VALUES(?,?)";
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1,id);
pstmt.setString(2, tel);
pstmt.executeUpdate();
pstmt.close();
//demo2 테이블에 추가
sql="INSERT INTO demo2(id, name) VALUES(?,?)";
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1,id);
pstmt.setString(2, tel);
pstmt.executeUpdate();
pstmt.close();
//demo3 테이블에 추가
sql="INSERT INTO demo3(id, name) VALUES(?,?)";
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1,id);
pstmt.setString(2, tel);
pstmt.executeUpdate();
pstmt.close();
//트랜잭션 완료
conn.commit();
}catch(Exception e){
//예외가 발생하면 rollback(하나라도 예외발생시 롤백)
try{ // 이 소스의 핵심 구문
conn.rollback();
} catch(Exception a){
}
System.out.println(e.toString());
}
}
}
'자바 DB 연동' 카테고리의 다른 글
PreparedStatement - 자바에서 오라클 쿼리 실행 (0) | 2013.06.15 |
---|---|
Statement - 자바에서 오라클 쿼리 실행 (0) | 2013.06.15 |
자바 DB 연동 - 테이블의 행을 순차적으로 셀렉트하는 소스 (0) | 2013.06.14 |
자바 DB 연동 - 컬럼명과 타입명,폭을 확인하는 소스 (0) | 2013.06.14 |
자바 DB 연동 - SELECT 문 실행시키는 소스 (0) | 2013.06.14 |