이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

31.7. 이진 토토 캔 저장

PostgreSQL두 가지를 제공합니다BYTEA또는 BYOID

필요한 방법을 결정하려면BYTEA토토 캔 유형은 저장에 적합하지 않습니다BYTEA최대 1GB의 이진 토토 캔를 보유 할 수 있습니다.

버전 7.2는의 첫 번째 릴리스입니다.JDBC지원하는 드라이버BYTEA토토 캔 유형. 이것의 소개getBytes (), setBytes (), getBinaryStream ()setbinarystream ()BYTEA토토 캔 유형. 7.1 이하에서 이러한 방법OID토토 캔 유형 관련호환 가능onConnection값에 대한 개체7.1.

사용하려면BYTEA토토 캔 유형getBytes (), setBytes (), getBinaryStream ()또는setbinarystream ()방법.

큰 객체 기능을 사용하려면를 사용할 수 있습니다.BARGEOBJECT클래스가 제공 한 클래스PostgreSQL JDBC드라이버 또는 사용하여getBlob ()setBlob ()방법.

중요 :당신은 an 내에서 큰 개체에 액세스해야합니다.SQL트랜잭션 블록. 너setAutocommit (false).

참고 :향후 릴리스에서JDBC드라이버,getBlob ()setBlob ()메소드가 더 이상 상호 작용하지 않을 수 있습니다BYTEA. 그래서 당신을 추천합니다BARGEOBJECT API사용하려는 경우

예 31-8JDBC드라이버.

예 31-8. 이진 데이터 처리JDBC

예를 들어 파일이 포함 된 테이블이 있다고 가정합니다.BYTEA열 :

테이블 이미지 생성 (Imgname Text, IMG Bytea);

이미지를 삽입하려면 다음을 사용합니다.

파일 파일 = 새 파일 ( "myimage.gif");

여기,setbinarystream ()스트림에서 열에서 열로 세트 수를 전송합니다.BYTEA. 이것은 또한 그럴 수도 있습니다setBytes ()메소드byte [].

이미지를 검색하는 것이 훨씬 쉽습니다. (우리는 사용준비 상태여기, 그러나진술클래스를 동일하게 사용할 수 있습니다.)

preparedstatement ps = con.preparestatement ( "imgname =?");

여기서 바이너리 토토 캔가 A로 검색되었습니다byte []. 당신은를 사용할 수있었습니다입력 스트림대상.

또는 매우 큰 파일을 저장하고BARGEOBJECT API파일을 저장하려면 :

테이블 생성 imagesLo (imgname text, imgoid oid);

이미지를 삽입하려면 다음을 사용합니다.

// 모든 큰 대형 API 호출은 트랜잭션 블록 내에 있어야합니다.

큰 개체에서 이미지 검색 :

// 모든 대형 OBJECT API 호출은 트랜잭션 블록 내에 있어야합니다.