JDBC-PrepareStatement 사용하기(Statement 대신)
Statement로 사용시 query 문을 String형식으로 해야 하기 때문에 , 또는 ' 때문에 에러가 나는 경우가 많다.
이러한 불편을 제거하기 위해 PrepareStatement를 사용한다.
<!-- 사용방법-->
//DB_Connection method
Connection DB_Connection() throws ClassNotFoundException, SQLException, Exception
{
String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
Class.forName( "oracle.jdbc.driver.OracleDriver" );
Connection conn = DriverManager.getConnection( url, "scott", "tiger" );
return conn;
}
Connection conn = null;
PreparedStatement pstmt=null; //PrepareStatement를 사용하기 위해 Statement 대신 정의
ResultSet rs = null;
try {
conn = DB_Connection();
conn.setAutoCommit(false); //autoCommit을 false로 설정
pstmt=conn.prepareStatement("insert into TB_MEMBER_BOARD
(SEQ,USER_ID,TITLE,REGIST_DATE,CONTENTS,READ_COUNT)
values (?,?,?,sysdate,?,0)"); //다음과 같이 변수가 들어갈 곳은 ? 로 대신하고
//PrepareStatement의 setInt,setString method를 사용하여 index로 물음
//표에 접근할수 있다.(물론 set 순서가 뒤바뀌어도 상관없다)
pstmt.setInt(1,seq);
pstmt.setString(2,userId);
pstmt.setString(3,title);
pstmt.setString(4,contents);
pstmt.executeUpdate();
conn.commit();
conn.setAutoCommit(true); //트랜잭션 종료
} catch( Exception e ) {
conn.rollback(); //에러발생할 경우 롤백 및 트랜잭션 종료
conn.setAutoCommit(true);
out.println( e.toString() );
} finally {
try { if( rs != null ) rs.close(); } catch ( Exception e ) {}
try { if( stmt != null ) stmt.close(); } catch ( Exception e ) {}
try { if( conn != null ) conn.close(); } catch ( Exception e ) {}
}
'Web > JDBC' 카테고리의 다른 글
JDBC 기본설정 순서 (0) | 2009.03.31 |
---|