사용환경은
* Alzza Linux Kernel 2.2.12
* JDK1.3
* Postgresql7.1.2
이렇게 설정되어 있습니다. 이중 large object를 사용하는 message라는 테이블구조는 아래와 같습니다.
CREATE TABLE message (
mid int PRIMARY KEY,
message oid
);
여기서 Postgres.org 홈페이지에 있는 JDBC를 이용한 large object를 사용하는 샘플코드를 사용해 봤는데 실행시 에러가 납니다. 에러는 다음과 같습니다.
Connection successful!
InputStream as parameter not supported
at org.postgresql.jdbc2.PreparedStatement.setBinaryStream(PreparedStatem
ent.java:476)
at test.main(test.java:37)
너무 안되어서 현재 개발버전인 7.2로도 테스트 해보았으나 마찬가지 에러가 납니다. 제가 작성한 샘플코드는 아래와 같습니다.
class test {
public static void main (String args[]) {
Connection connection = null;
File file;
FileInputStream fis;
try {
file = new File("headcut.jpg");
fis = new FileInputStream(file);
} catch (Exception e) {e.printStackTrace(); return;}
try {
Class.forName ("org.postgresql.Driver");
connection = DriverManager.getConnection("jdbc:postgresql:jdbcdb", "postgres", "postgres");
System.out.println ("Connection successful!");
PreparedStatement ps = connection.prepareStatement("INSERT INTO message VALUES (?, ?)");
ps.setInt(1, 1000);
ps.setBinaryStream(2, fis, (int)file.length());
ps.executeUpdate();
ps.close();
} catch (Exception e){
e.printStackTrace();
return;
}
}
}
아직 JDBC에서 지원이 안되는 것인가요? JDBC는 postgresql소스를 컴파일해서 얻었습니다. 여러 고수님들의 조언 부탁드립니다.
감사합니다.
|