ByteArrayInputStream()显示为null

时间:2015-05-27 16:12:13

标签: java mysql bufferedimage

我正在尝试将MySQL数据库中的图像作为blob数据格式([B@e96bf)加载,但我无法将其加载到JLabel,如下所示。它显示ByteArrayInputStream为空。

byte[] bytesl = null;

ResultSet rs = DB.DB.search("select image from imageio where id = '2'");
while (rs.next()) {
    bytesl = rs.getBytes(1);               
}
BufferedImage imag = ImageIO.read(new ByteArrayInputStream(bytesl));

Image img = imag;

img = img.getScaledInstance(jLabel1.getWidth(), jLabel1.getHeight(),
                            Image.SCALE_SMOOTH);
jLabel2.setIcon(new ImageIcon(img));

2 个答案:

答案 0 :(得分:0)

我认为你的代码不会转到while循环,因为没有这样的查询记录。最可能的问题是'周围的迹象2.通常id是一个数字,但在你的请求中,它看起来像你将它与字符串进行比较。尝试删除2周围的撇号。

答案 1 :(得分:0)

fileContent = Files.readAllBytes(f2.toPath());
DB.DB.statement("insert into imageio (image) values ('" + fileContent + "')");

您刚刚将字符串[B@96bf 插入数据库。 ImageIO无法将其转换为图像,因此返回null。

您至少应使用PreparedStatement并提供数据作为参数。你应该在这里使用Blob和输入流。