출처는 okjsp
CLOB컬럼의 경우 WAS에 따라 설정하는 방법이 다르기 땜에 개발후 운영에 적용시
일부 문제가 되기도 한다.ㅎㅎ
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);
No comments:
Post a Comment