我正在尝试将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));
答案 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和输入流。