在数据库中插入图像时出错

时间:2012-02-24 19:21:03

标签: java java-ee oracle9i

执行以下程序会给我错误,

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 个答案:

答案 0 :(得分:1)

我还必须在数据库中插入图像,它的工作方式如下

  1. 将图像转换为字节数组

  2. 使用setBinaryStream,其中data是Byte

    的数组

    preparedStatement.setBinaryStream(1,new ByteArrayInputStream(data),data.length);

  3. 编辑:此技术的缺点是数组的整数限制大小

答案 1 :(得分:0)

AbstractMethodError表示您没有使用正确的驱动程序。如果您使用的是java5或更高版本,请尝试下载相应的ojdbc驱动程序(ojdbc14.jar适用于java1.4)

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