이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.현재버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

대형 윈 토토 객체

포스트그레스, 대형 객체 (라고도 함블롭)는 다음을 유지하는 데 사용됩니다. 일반 SQL 테이블에 저장할 수 없는 데이터베이스의 데이터입니다. 테이블/인덱스 쌍으로 저장되며 OID 값으로 테이블을 소유합니다.

이제 대형 개체를 윈 토토하는 방법이 있습니다. 첫 번째는 표준JDBC방법이며, 여기에 문서화되어 있습니다. 다른 하나는 API에 대한 자체 확장을 사용합니다. 이는 libpq 대형 객체를 나타냅니다.APIJava로 변환하여 더 나은 대규모 액세스를 제공합니다. 표준보다 객체. 내부적으로 드라이버는 대형 개체 지원을 제공하는 확장입니다.

JDBC, 액세스하는 표준 방법 ResultSet에서 getBinaryStream() 메소드를 윈 토토하고 있으며 ReadyStatement의 setBinaryStream() 메서드입니다. 이러한 방법은 대형 객체는 Java 스트림으로 나타나므로 java.io 패키지 및 기타 패키지를 윈 토토하여 객체를 조작합니다.

예를 들어, 파일 이름이 포함된 테이블이 있다고 가정해 보겠습니다. 이미지 및 해당 이미지를 포함하는 큰 객체:

테이블 이미지 생성(imgname 이름,imgoid oid);

이미지를 삽입하려면 다음을 사용하십시오:

파일 파일 = 새 파일("myimage.gif");
FileInputStream fis = new FileInputStream(파일);
ReadyStatement ps = conn.prepareStatement("이미지 값에 삽입(?,?)");
ps.setString(1,file.getName());
ps.setBinaryStream(2,fis,file.length());
ps.executeUpdate();
ps.close();
fis.close();

이제 이 예에서 setBinaryStream은 설정된 수의 스트림의 바이트를 대형 객체로 저장하고 OID를 이에 대한 참조를 보유하는 필드입니다.

이미지를 검색하는 것이 훨씬 더 쉽습니다. (나는 ReadyStatement를 윈 토토하고 있습니다. 여기서는 성명도 동일하게 윈 토토할 수 있습니다):

PreparedStatement ps = con.prepareStatement("이름=?인 이미지에서 oid를 선택하십시오.");
ps.setString(1,"myimage.gif");
ResultSet rs = ps.executeQuery();
if(rs!=null) 
    동안(rs.next()) 
        InputStream은 = rs.getBinaryInputStream(1);
        // 여기서 어떤 방식으로든 스트림을 윈 토토합니다.
        is.close();

    rs.close();

이제 여기에서 대형 개체가 검색되는 위치를 볼 수 있습니다. 입력스트림. 또한 이전에 스트림을 닫는 것도 알 수 있습니다. 결과의 다음 행을 처리합니다. 이것은의 일부입니다.JDBC사양은 다음과 같습니다. ResultSet.next() 또는 ResultSet.close()가 호출됩니다.