Ошибка при вставке изображения в базу данных - PullRequest
0 голосов
/ 24 февраля 2012

Выполнение следующих программ приводит к ошибке, как,

Exception in thread "main" java.lang.AbstractMethodError: oracle.jdbc.driver.OraclePreparedStatement.setBlob(ILjava/io/InputStream;)V
    at ImageStore.main(ImageStore.java:28)

Я использую ojdbc14.jar, и моя версия Oracle - 9.0.1.1.1

public class ImageStore {

/**
 * @param args
 * @throws Exception
 */
public static void main(String[] args) throws Exception {
    Class.forName("oracle.jdbc.driver.OracleDriver");

    Connection con = DriverManager
            .getConnection("jdbc:oracle:thin:@localhost:1521:orcl",
                    "usrname", "password");

String sql="update items set image=? where id=1";
    //String sql="select * from price";
    PreparedStatement ps=con.prepareStatement(sql);
    File f=new File("E:/Images/s.jpg");
    InputStream fos= new FileInputStream(f);

    ps.setBlob(1, fos);

    ps.execute();
    /*while(rs.next())
        System.out.println(rs.getInt(1));
*/
    ps.close();
    con.close();


}

}

Пожалуйста, помогите

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

Мне пришлось вставить изображение также в базу данных, и он работал следующим образом:

  1. Преобразование изображения в массив байтов

  2. Используйте setBinaryStream, где данные - это массив байтов

    prepareStatement.setBinaryStream (1, новый ByteArrayInputStream (data), data.length);

РЕДАКТИРОВАТЬ: Недостатком этого метода является то, что целочисленный размер ограничения для массива

0 голосов
/ 24 февраля 2012

AbstractMethodError говорит о том, что вы не работаете с правильным драйвером.Если вы используете java5 или выше, попробуйте загрузить соответствующий драйвер ojdbc (ojdbc14.jar для java1.4)

http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-111060-084321.html

...