/**
 * Oracle10g 부터는  CLOB 데이터 타입을 처리하는 방법이 간단해 졌습니다.
 *
 *   -- scott/tiger에 테스트 테이블 생성
 *   create table clob_test (contents clob);    
 *
 * - 첫 번째 방법 SetBigStringTryClob을 true 로 설정한 후 처리 하는 방법 입니다.
 * - 두 번째 방법 OraclePreparedStatement의 setStringForClob 메소드를 이용하는 방법 입니다.
 * - 자세한 내용은 아래 링크를 참고해 주세요.
 *  참고링크
 *
 */   
 
 
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
 
public class CLOBTypeTest {
 
        
    public static void main(String[] args){
        
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rset = null;
        String user     = "scott";
        String password = "tiger";
        String url      = "jdbc:oracle:thin:@localhost:1521:ora10g";
        
        try{
            
            StringBuffer str = new StringBuffer();

            for(int i=0 ; i<10000; i++){
                str.append(" CLOB Test Data ");
            }
            
            System.out.println(" INSERT CLOB length:  "+str.length());
            
            Properties props = new Properties();
            props.put("user", user );
            props.put("password", password);
            props.put("SetBigStringTryClob", "true");
            
            DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());            
            conn = DriverManager.getConnection (url, props);
            
            pstmt = (PreparedStatement)conn.prepareStatement(" INSERT INTO clob_test VALUES(?) ");
            
            pstmt.setString(1, str.toString());
            pstmt.executeUpdate();
            
            pstmt.close();
            
            String sqlCall = "SELECT contents FROM clob_test WHERE rownum = 1 ";
            pstmt= conn.prepareStatement(sqlCall);
            
            rset = pstmt.executeQuery();     
            String clobVal = null;       
            
            while (rset.next()) {  
                clobVal = rset.getString(1);  
                System.out.println(" SELECT CLOB length: "+clobVal.length());     
            }
            
        }catch(SQLException sqle){
            sqle.printStackTrace();
        }finally {
            try {
                if (rset != null)
                    rset.close();
                if (pstmt != null)
                    pstmt.close();
                if (conn != null)
                    conn.close();
            } catch (SQLException se) {
            }           
        }  
    }
        
}

출처 : http://www.oracleclub.com/lectureview.action

+ Recent posts