我想從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