/**
* 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