当前位置: 动力学知识库 > 问答 > 编程问答 >

java - converting blob to an image stream and assign it to jLabel

问题描述:

I am just trying to Convert a blob string which is in Database to Byte array and then after converting it convert to buffered Image and then assign it to a label

Here's my code

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();

}

}

but when i run this code it's show the Null pointer Stack-trace

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)

网友答案:

Please try the following piece of code:

Connection connection = null;
PreparedStatement statement = null;

ResultSet result;


public DisplayImage() {
    super("Image Display");
    setSize(600,600);
    connection = getConnection();
    try {
        statement = connection.prepareStatement("select content from image where id=1");
        result = statement.executeQuery();

            byte[] image = null;
            while(result.next()) {
                image = result.getBytes("content");

            }
            Image img = Toolkit.getDefaultToolkit().createImage(image);
            ImageIcon icon =new ImageIcon(img);
            JLabel lPhoto = new JLabel();
            lPhoto.setIcon(icon);
            add(lPhoto);

    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    setVisible(true);
}


public Connection getConnection() {
    Connection connection = null;

    try {
        Class.forName("com.mysql.jdbc.Driver");
        connection = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/db_name", "user", "pass");
    } catch (Exception e) {
        System.out.println("Error Occured While Getting the Connection: - "
                + e);
    }
    return connection;
}

public static void main(String[] args) {
    new DisplayImage();
}

}
分享给朋友:
您可能感兴趣的文章:
随机阅读: