Я написал следующий код: -Ошибка при получении данных BLOB с использованием JDBC
import java.sql.*;
import java.util.Properties;
import java.io.*;
public class Retrieving_Image {
public static void main(String[] args) throws Exception{
Properties p = new Properties();
p.put("user", "system");
p.put("password", "password");
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe",p);
PreparedStatement pstmt = con.prepareStatement("select * from picture",ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = pstmt.executeQuery();
rs.first();//retrieving only picture
Blob b = rs.getBlob(1);
byte arr[] = new byte[(int)b.length()];
arr = b.getBytes(1, (int)b.length());
FileOutputStream fos = new FileOutputStream("result.jpg");
fos.write(arr);
fos.close();
}
}
В приведенном выше коде я пытаюсь получить изображение, которое находится в 1-й индекс первой строки результирующего набора, в факт, что набор результатов имеет только одну строку. Но я получаю следующее сообщение об ошибке: -
Exception in thread "main" java.lang.AbstractMethodError: oracle.jdbc.driver.ScrollableResultSet.getBlob(I)Ljava/sql/Blob;
at jdbc.Retrieving_Image.main(Retrieving_Image.java:24)
С ошибочным утверждением бытием: -
Blob b = rs.getBlob(1);
Из моего остроумия. Будет очень признателен, если кто-нибудь сможет объяснить ошибку.
Смотрите здесь: http://stackoverflow.com/a/8349906/330315 прочитать блоб просто использовать 'getBinaryStream()' вместо –