WAS 별 오라클 CLOB 사용 방법 정리
이놈에 CLOB라는게...
어떻게 WAS별로 설정이 조금씩 틀리군요..
정확히는..WAS별로 틀린게 아니라..WAS별로 datasource 설정이
틀려서 그런듯한데...
할때마다 CLOB 검색법 찾아서 하기도 지쳤습니다.
한번 정리 해봤습니다..
(중복이면 난감;; 개인적인 백업 목적도 있으니 중복이라도 야단치지 마세요;;)
import java.sql.Clob;
import weblogic.jdbc.common.OracleClob;
import
oracle.jdbc.driver.OracleResultSet;
import oracle.sql.CLOB;
import
org.apache.commons.dbcp.DelegatingResultSet;
String query1 = "select content from "+table+" where no="+ no + " for
update";
con = getConnection();
con.setAutoCommit(false);//꼭 setAutoCommit을 false로
지정
pstmt = con.prepareStatement(query1);
rs = pstmt.executeQuery();
while (rs.next()){
/**********************************************
* Tomcat
*
********************************************/
Clob clob =
rs.getClob(1);
Writer writer =
((CLOB)clob).getCharacterOutputStream();
Reader src = new
CharArrayReader(contentData.toCharArray());
char[] buffer = new
char[1024];
int read = 0;
while ( (read = src.read(buffer,0,1024)) !=
-1)
{
writer.write(buffer, 0, read); // write
clob.
}
src.close();
writer.close();
/**********************************************
* weblogic
*
********************************************/
Clob clob =
rs.getClob(1);
Writer writer =
((OracleClob)clob).getCharacterOutputStream();
Reader src = new
CharArrayReader(contentData.toCharArray());
char[] buffer = new
char[1024];
int read = 0;
while ( (read = src.read(buffer,0,1024)) !=
-1)
{
writer.write(buffer, 0, read); // write
clob.
}
src.close();
writer.close();
/**********************************************
* sunone
*
********************************************/
Clob clob =
rs.getClob(1);
Writer characterStream =
clob.setCharacterStream(0);
characterStream.write(contentData);
characterStream.close();
/**********************************************
* interstage
* ********************************************/
CLOB clob =
((OracleResultSet)((DelegatingResultSet)rs).getDelegate()).getCLOB(1);
BufferedWriter
writer = new
BufferedWriter(clob.getCharacterOutputStream());
writer.write(form.getContent());
writer.close();
}
con.commit();
con.setAutoCommit(true);
출처 : http://okjsp.pe.kr/seq/98774