JDBC-PrepareStatement 사용하기(Statement 대신)

Published on: 2009. 3. 31. 02:59 by louis.dev


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