我想从MySQL中检索图像,并使用Java Swing将其加载到JLabel
。如何从MySQL检索图像到Java Swing?
但我无法得到这项工作。
这里是我下面的代码和错误,我越来越:
try {
Class.forName("com.mysql.jdbc.Driver"); // MySQL database connection
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/image_db", "root", "root");
PreparedStatement pst = conn.prepareStatement("Select * from image_tbl where id='"+jTextField1.getText()+"'");
ResultSet rs = pst.executeQuery();
byte b[] = null;
while(rs.next())
{
b= rs.getBytes(2);
}
jLabel1.setIcon(new ImageIcon (Toolkit.getDefaultToolkit().createImage(b)));
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Wrong Data Detected! Please provide correct data");
}
异常发生的历史:
sun.awt.image.ImageFormatException: JPEG datastream contains no image
at sun.awt.image.JPEGImageDecoder.readImage(Native Method)
at sun.awt.image.JPEGImageDecoder.produceImage(JPEGImageDecoder.java:141)
at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:269)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:205)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:169)
Premature end of JPEG file
您正在选择表中的每一列。您应该选择具有图像字节的列。 – JJF
恩,[有一种方法](https://stackoverflow.com/questions/29983710/displaying-images-from-mysql-database-on-a-single-column-of-jtable/29983992#29983992),[这里有另一个](https://stackoverflow.com/questions/20752432/convert-bufferedinputstream-into-image/20753089#20753089),[和另一个](https://stackoverflow.com/questions/35069359/trying-to-retrieve -both-text-and-blob-from-mysql-to-jtable/35072936#35072936) – MadProgrammer
首先,如上所述,您只是读取所有结果以加载最后一张图片;其次,我将验证读取的字节数与写入的字节数相同,但由于我们不知道图像是如何写入的,我们不知道使用这种方法是否最好理念;第三,我会在'createImage'上使用'ImageIO',只是因为它不涉及任何线程 – MadProgrammer