我只是想将数据库中的 blob 字符串转换为字节数组,然后将其转换为缓冲图像,然后将其分配给标签这是我的代码
package ims.project;
import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import javax.imageio.ImageIO;
public class readingdata extends JFrame {
readingdata() {
JPanel pane = new JPanel();
JLabel label1 = new JLabel("help");
JLabel label2 = new JLabel("33");
pane.add(label1);
pane.add(label2);
setVisible(true);
add(pane);
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ims1", "root", "root");
Statement st = con.createStatement();
String ss = "select Pic from supplier where Supplier_id= '" + label2.getText() + "'";
JOptionPane.showMessageDialog(null, label2.getText());
ResultSet rs = st.executeQuery(ss);
while (rs.next()) {
Blob blob = rs.getBlob("Pic");
int blobLength = (int) blob.length();
byte[] blobAsBytes = blob.getBytes(1, blobLength);
final BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(blobAsBytes));
label2.setIcon(new ImageIcon(bufferedImage));
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String args[]) {
new readingdata();
}
}
但是当我运行这段代码时,它会显示空指针堆栈跟踪
java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:228)
at ims.project.readingdata.<init>(readingdata.java:47)
at ims.project.readingdata.main(readingdata.java:60)