[답변]트랜잭션 예제 0 0 2,255

by 안병훈 [2006.11.08 18:05:41]


먼저 간단히 설명을 드립니다.

 

Connection 클래스
 - setAutoCommit(boolean) 메소드로 설정 및 해제
 - true  : 쿼리문 단위 처리
 - false : 트랜잭션별 처리

 - rollback() 메소드.
 - commit() 메소드.

 - AutoCommit(false) 기능 사용 후 setAutoCommit(true)를 해준다.

 - getAutoCommit() 메소드로 auto-commit 모드의 상태를 확인 할 수 있다.

 

예)

Connection conn = null;

Statement stmt = null;

 

try {

  conn = DatabaseManager.getConnection(url, id, password);

  conn.setAutoCommit(false);  //트랜잭션 활성화

  stmt = conn.createStatement();

 

  stmt.executeUpdate("insert into test values(1, 2, 3)");

 

  conn.commit();

} catch (SQLException se) {

  conn.rollback();

} finally {

  conn.setAutoCommit(true);

  stmt.close();

  conn.close();

}

 

대략 이런식으로 사용하죠. 님께서는 일단 붉은 글씨로 표시한 부분에 주의해 주시구요.

 

Statement, PreparedStatement로 정의된 인스턴스를 중복해서 사용하는 것도 별로 좋은 방법이 아니라고 하네요. 중복사용 되고 있다면 1회 사용 후 close()를 실행해서 닫아준 후 다시 실행하는게 좋습니다.

 

중복 사용부분:

result = stmt.executeUpdate
("UPDATE accTran SET balance = balance - 50000 WHERE name = '김정은'");
result = stmt.executeUpdate
("UPDATE accTran SET balance = balance + 50000 WHERE name = '이명재'");

 

테스트를 할 수 없어서 정확한 결론을 내리기가 힘들지만 붉은글씨 부분과 중복사용 부분을 다시 한번 보아 주셨으면 합니다.

 

도움이 되기를 바라면서 이만 줄입니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입