Posted by 윤경구 on November 22, 1997 at 09:42:57:
In Reply to: 오라클 long raw 데이타 Insert & select ? posted by 백승용 on November 21, 1997 at 19:53:08:
제 생각에는 (테스트해보지는 않았어요)
ResultSet.getBinaryStream() 메소드를 사용하는 것이 좋을 것 같습니다.
물론 ResultSet.getBytes() 혹은 ResultSet.getObject() 메소드도 가능할 것 같은데
그것은 LONG RAW 데이터의 크기에 따라 판단하면 될 것 같네요.
JDBC 매뉴얼에서 권장하는 것은 스트림을 사용하는 것입니다.
JDBC 매뉴얼에는 LONGVARBINARY로 나와있네요.
java.sql.Statement stmt = con.createStatement();
ResultSet r = stmt.executeQuery("SELECT xxx FROM Table2");
// 충분한 버퍼를 잡아야겠지요.
byte buff = new byte[4096];
while (r.next()) {
Java.io.InputStream fin = r.getBinaryStream("xxx");
for (;;) {
int size = fin.read(buff);
if (size == -1) { // at end of stream
break;
}
output.write(buff, 0, size);
}
}
java.io.File file = new java.io.File("C:\images\big.jpg");
int fileLength = file.length();
java.io.InputStream fin = new java.io.FileInputStream(file);
java.sql.PreparedStatement pstmt = con.prepareStatement(
"UPDATE Table5 SET stuff = ? WHERE index = 4");
pstmt.setBinaryStream (1, fin, fileLength);
pstmt.executeUpdate();