我有一张名为P100.jpg
的图片。我正在调整它并将其转换为ZP100.png
。我通过插入查询将其存储到数据库MySQL中。
File imageFile = new File("F:\\POSTERS\\Roses\\ZP100.png");
FileInputStream fis = new FileInputStream(imageFile);
String insertImage = "insert into image values(?,?)";
prestmt = con.prepareStatement(insertImage);
prestmt.setInt(1,4);
prestmt.setBinaryStream(2, fis, fis.available());
result = prestmt.executeUpdate();
现在,我想通过将其分配给标签来检索该图像并在表单上显示。
String selectImage = "select img from image";
prestmt = con.prepareStatement(selectImage);
但它给我的例外是
java.sql.SQLException: Can not issue executeUpdate() for SELECTs
为了将图像分配给标签,我有:
image.setText("ZP100.png");
我知道,它无法奏效。请帮我重新编码。
答案 0 :(得分:0)
第一个错误必须是:
result = prestmt.executeUpdate();
我担心你已宣布result
类型为ResultSet
当您将int
的返回类型executeUpdate()
分配给result
时,
显然会引发SQLException
。
修改上述语句:
int insertResult = prestmt.executeUpdate();
你应该取得成功。
建议 :
prestmt.setBinaryStream(2,fis, fis.available());
如果您想要从流中read
个内容,请不要依赖available()
方法
它只是一个估计,并不保证您可以阅读直到流的结尾。
而是使用setBinaryStream
方法的其他签名,如:
setBinaryStream( int parameterIndex, InsputStream is )
Javadoc说, The data will be read from the stream as needed until end-of-file is reached.
,这意味着你不需要明确地阅读它
通过更改,您的陈述将如下所示:
prestmt.setBinaryStream(2,fis);
图片强>:
我没有在Java GUI和图像方面做太多工作
但是可以建议您参考以下的一些解决方案: