这个问题已经在这里有了答案:
我编写了一个代码,该代码将帮助用户使用JDBC将映像保存在oracle数据库中。
PreparedStatement ps =con.prepareStatement("insert into employee values(?,?)");
ps.setString(1,name);
ps.setBlob(2,inputStream);
但是当我尝试运行代码时,出现错误
java.lang.AbstractMethodError:方法oracle / jdbc / driver / T4CPreparedStatement.setBlob(ILjava / io / InputStream;)V是抽象的
这是怎么引起的,我该如何解决?
尝试先将inputStream转换为byte []并将其作为参数传递给steBlob方法
例如:
BufferedInputStream bis= new BufferedInputStream(inputStream); /// pass your inputStream here
int size=0;
byte[] bytes;
Blob blob = con.createBlob(); // create blob using connection obj
int length = 1;
int readCount=0;
System.out.println(img.getCanonicalPath());
do {
bytes = new byte[bis.available()];
readCount = bis.read(bytes);
blob.setBytes(length, bytes); ///populate chunks of data to the blob
length=length+readCount;
size= bis.available();
//System.out.println(bis.read());
}while ( size > 0 );
PreparedStatement st = con.prepareStatement("INSERT INTO TABLE VALUES (?,?)");
st.setString(1, id);
st.setBlob(2, blob);
st.execute();