gpt4 book ai didi

java - 尝试将图像插入数据库获取 ORA-01460 : unimplemented or unreasonable conversion requested error

转载 作者:行者123 更新时间:2023-12-01 04:55:46 25 4
gpt4 key购买 nike

我正在尝试将图像插入数据库并使用自动增量 photo_id。

我的表格列是:

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 中有明确记录)。

您需要查询文件的大小,而不是输入流中的“可用字节”:

ps.setBinaryStream(2, fis, (int)file.length());

根据您的 JDBC 驱动程序的版本,您也可以使用

ps.setBinaryStream(2, fis, file.length());

但是 setBinaryStream(int, InputStream, long) 是在 JDBC 4.0 中定义的,因此并非所有驱动程序版本都实现。 setBinaryStream(int, InputStream, int) 是 JDBC 2.0(如果我没记错的话),应该在所有版本中都可用。

关于java - 尝试将图像插入数据库获取 ORA-01460 : unimplemented or unreasonable conversion requested error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14194165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com