기술지원 문의

clob 데이터를 사용하고자 하는데 ClassCastException 이 계속 발생하네요.
강기단 / 2004-03-15 09:36

Oracle 8.1.7 
Resin 2.1.11
Oracle 8.1.7 jdbc 드라이버 classes12.zip 
을 사용하여
테스트 작업을 하는데
clob 데이터를 입력하는 부분에서 
ClassCastException 이 발생하네요.
계속 발생하는것은 아니고.
어느정도는 괜찮다가
한번발생하면 계속 발생하네요.
Resin 을 restart 하면 또 어느정도는 괜찮다가 어느 시간이 지나면 또 발생하구요 --;;
혹 해결방법이 있으면 부탁드립니다.
수고하세요.
미리 감사드립니다.

                                                                 pstmt =
conn.prepareStatement(
\" SELECT xxx FROM table WHERE table_id = ?  for update \");
pstmt.setLong(1, table_id);

rs = pstmt.executeQuery();

if (rs.next()) {
clob = (oracle.sql.CLOB) rs.getClob(\"xxx\");

BufferedWriter writer = new BufferedWriter(clob.getCharacterOutputStream());
writer.write(dto.getContent().toString());
writer.flush();
writer.close();
}

[Re]clob 데이터를 사용하고자 하는데 ClassCastException 이 계속 발생하네요.
관리자 / 2004-03-17 11:50

clob = (oracle.sql.CLOB) rs.getClob(\"xxx\"); 이부분에서 ClassCastException이 발생하는 것 같습니다.

첫번째로,
rs를 java.sql.* 안에 있는 패키지를 사용하지 않고, 꼭 oracle.sql.CLOB 으로 타입캐스팅 해서 사용해야 하는지요? 이 부분을 다시 한번 확인하세요.
java.sql.* 에 있는 클래스를 사용하면 다음과 같습니다.
java.sql.Clob clob = rs.getClob(\"xxx\");
그후 getAsciiStream(), getCharacterStream() 를 이용해서 사용하시면 문제없이 사용될 것 같군요.

두번째로,
clob은 JDBC spec2.0부터 안정화 되고 있습니다. 해당 db의 jdbc버전이 아마 JDBC spec2.0을 제대로 지원하지 않을 경우도 있겠군요.
해당 JDBC Driver를 Upgrade 해보시는게 좋을 듯 합니다.