일부 값을 반환하는 SQL 쿼리를 만들고 싶습니다. 그 중 하나의 값은 blob입니다.BLOB를 쿼리하는 방법은 무엇입니까?
그냥 blob 열을 선택하면 BigDecimal이 반환됩니다.
일부 값을 반환하는 SQL 쿼리를 만들고 싶습니다. 그 중 하나의 값은 blob입니다.BLOB를 쿼리하는 방법은 무엇입니까?
그냥 blob 열을 선택하면 BigDecimal이 반환됩니다.
Materializing Blob Data의 javadocs 섹션을 살펴보십시오.
BLOB 열에서 getBlob
을 호출 한 다음 이진 스트림을 읽어야합니다.
Blob blob = rs.getBlob("BLOB_COLUMN_NAME");
InputStream blobStream = blob.getBinaryStream();
//e.g. save blob to a file
FileOutputStream out = new FileOutputStream("file.txt");
byte[] buffer = new byte[1024];
int n = 0;
while((n = blobStream.read(buffer)) != -1) {
out.write(buffer, 0, n);
}
out.flush();
out.close();
blobStream.close();
삽입 매개 변수
의 일반 JDBC 쿼리 ..
stmt = con.prepareStatement("INSERT INTO TABLE(fileName, "
+ "blobData) VALUES(?, ?)");
stmt.setString(1, "somefilename");
stmt.setObject(2, data);//data is byte[]
stmt.executeUpdate();
선택 ..
ResultSet rs;
stmt = con.prepareStatement("SELECT blobData "
+ "FROM BlobTest " + "WHERE fileName = ?");
stmt.setString(1, "somevalue");
rs = stmt.executeQuery();
if (!rs.next()) {
System.out.println("No such file stored.");
} else {
Blob b = rs.getBlob(1);
BufferedOutputStream os;
ResultSet에서 getBytes() 메소드를 호출하려고 시도하십시오.
stmt = dbConn.prepareStatement("SELECT ...");
ResultSet rs = stmt.executeQuery();
byte[] blob = rs.getBytes(1);
그러면 BLOB 오브젝트가 바이트 배열로 리턴되어야합니다.
실제로 setObject() 대신 setBytes()가 더 휴대 가능할 수 있습니다. 하지만 그것은 JDBC 드라이버에 크게 의존합니다. –