2011-01-27 4 views

답변

2

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(); 
1

삽입 매개 변수

의 일반 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; 
+0

실제로 setObject() 대신 setBytes()가 더 휴대 가능할 수 있습니다. 하지만 그것은 JDBC 드라이버에 크게 의존합니다. –

1

ResultSet에서 getBytes() 메소드를 호출하려고 시도하십시오.

stmt = dbConn.prepareStatement("SELECT ..."); 
ResultSet rs = stmt.executeQuery(); 
byte[] blob = rs.getBytes(1); 

그러면 BLOB 오브젝트가 바이트 배열로 리턴되어야합니다.

관련 문제