Java 尝试将图像插入数据库获取ORA-01460:未实现或请求的转换不合理错误
我正在尝试向数据库中插入一个具有自动递增照片id的图像 我的表格列是:Java 尝试将图像插入数据库获取ORA-01460:未实现或请求的转换不合理错误,java,database,image,jsp,insert,Java,Database,Image,Jsp,Insert,我正在尝试向数据库中插入一个具有自动递增照片id的图像 我的表格列是: PHOTO_ID (primary key), USERNAME (fkey), PICTURE, PICTURE_TITLE, LIKES 我的代码是 public class UploadPhotoDao { public int insertPhoto(UploadPhotoBean uploadBean){ Connection con = null; Prepared
PHOTO_ID (primary key),
USERNAME (fkey),
PICTURE,
PICTURE_TITLE,
LIKES
我的代码是
public class UploadPhotoDao {
public int insertPhoto(UploadPhotoBean uploadBean){
Connection con = null;
PreparedStatement ps = null;
int index = 0;
final String query = "INSERT INTO PHOTOS_DETAILS (PHOTO_ID,USERNAME,PICTURE,PICTURE_TITLE,LIKES) VALUES (PHOTO_ID_SEQUENCE.nextval,?,?,?,?)";
try {
con = ConnectionUtil.getConnection();
ps = con.prepareStatement(query);
ps.setString(1, uploadBean.getUsername());
File file =new File(uploadBean.getPicture());
FileInputStream fis = new FileInputStream(file);
ps.setBinaryStream(2, fis, fis.available());
ps.setString(3, uploadBean.getPictureTitle());
ps.setInt(4, new Integer(0));
index = ps.executeUpdate();
}
catch (SQLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
ConnectionUtil.closeQuitly(ps);
ConnectionUtil.closeQuitly(con);
}
return index;
}
}
我得到了一个错误:
java.sql.SQLException: ORA-01460: unimplemented or unreasonable conversion requested
InputStream.available不返回Javadocs中明确记录的流大小
您需要查询文件的大小,而不是inputstream中的可用字节:
ps.setBinaryStream(2, fis, (int)file.length());
根据JDBC驱动程序的版本,您也可以使用
ps.setBinaryStream(2, fis, file.length());
但是setBinaryStreamint,InputStream,long是在JDBC4.0中定义的,因此并不是由所有驱动程序版本实现的。如果我没有弄错的话,setBinaryStreamint,InputStream,int是JDBC 2.0,应该在所有版本中都可用。即使我更改为ps.setBinaryStream2,fis,intfile.length,也会出现相同的错误;请检查我的查询…是否有任何错误???我在db表中将图片列定义为BLOB。我用一个序列自动递增照片id列…@user1900771:对不起,那我就没有任何想法了我…我解决了这个问题…这只是驱动程序问题..将ojdbc14.jar更改为最新版本。如果省略BLOB列,insert语句有效吗?如果为BLOB列提供NULL是否有效?解决了此问题..只是一个ojdbc14.jar文件问题…需要获取最新版本。就这样