Search code examples
javamysqlimagenullimageicon

How to make the program continues even if the value is null


I have a program here in java and MySQL for database. However the problem is: when the data for IMAGE in the SQL is null, the program stops loading picture. It shows "java.lang.IllegalArgumentException: input == null!". My question is how will I able to set the Icon picture as null and continue.

  try{
        PreparedStatement ps = conn.prepareStatement(President);
        ResultSet rs = ps.executeQuery();
        if(rs.next()){
        rs.absolute(1);
        FirstName1.setText(rs.getString("cFirstname"));
        LastName1.setText(rs.getString("CLastname"));
        MiddleName1.setText(rs.getString("cmiddlename"));
        BufferedImage im1 = ImageIO.read(rs.getBinaryStream("cimage"));
        ImageIcon image1 = new ImageIcon(im1);
        Image img1 = image1.getImage();
        Image newImage = img1.getScaledInstance(144, 144,     Image.SCALE_SMOOTH);
        ImageIcon after = new ImageIcon(newImage);
        btnPic1.setIcon(after);
        btnPic1.setText("");
        FirstName1.setVisible(true);
        LastName1.setVisible(true);
        btnPic1.setVisible(true);
        MiddleName1.setVisible(true);
        }

In my data the image stored here is null.

if(rs.next()){
        rs.absolute(2);
        FirstName2.setText(rs.getString("cFirstname"));
        LastName2.setText(rs.getString("CLastname"));
        MiddleName2.setText(rs.getString("cmiddlename"));
        BufferedImage im2 = ImageIO.read(rs.getBinaryStream("cimage"));
        ImageIcon image2 = new ImageIcon(im2);
        Image img2 = image2.getImage();
        Image newImage2 = img2.getScaledInstance(144, 144, Image.SCALE_SMOOTH);
        ImageIcon after2 = new ImageIcon(newImage2);
        btnPic2.setIcon(after2);
        btnPic2.setText("");
        FirstName2.setVisible(true);
        LastName2.setVisible(true);
        btnPic2.setVisible(true);
        MiddleName2.setVisible(true);
        }

Then my program doesn't do this and onwards.

if(rs.next()){
        rs.absolute(3);
        FirstName3.setText(rs.getString("cFirstname"));
        LastName3.setText(rs.getString("CLastname"));
        MiddleName3.setText(rs.getString("cmiddlename"));
        BufferedImage im3 = ImageIO.read(rs.getBinaryStream("cimage"));
        ImageIcon image3 = new ImageIcon(im3);
        Image img3 = image3.getImage();
        Image newImage3 = img3.getScaledInstance(144, 144, Image.SCALE_SMOOTH);
        ImageIcon after3 = new ImageIcon(newImage3);
        btnPic3.setIcon(after3);
        btnPic3.setText("");
        FirstName3.setVisible(true);
        LastName3.setVisible(true);
        btnPic3.setVisible(true);
        MiddleName3.setVisible(true);
        }

Solution

  • The result code would be something like this

    if(rs.next()){
            rs.absolute(2);
            FirstName2.setText(rs.getString("cFirstname"));
            LastName2.setText(rs.getString("CLastname"));
            MiddleName2.setText(rs.getString("cmiddlename"));
                if(rs.getBinaryStream("cimage")!=null){
                BufferedImage im2 = ImageIO.read(rs.getBinaryStream("cimage"));
                ImageIcon image2 = new ImageIcon(im2);
                Image img2 = image2.getImage();
                Image newImage2 = img2.getScaledInstance(144, 144, Image.SCALE_SMOOTH);
                ImageIcon after2 = new ImageIcon(newImage2);
            btnPic2.setIcon(after2);
            btnPic2.setText("");}
                else{
                btnPic2.setText("No Picture");     
                }
            FirstName2.setVisible(true);
            LastName2.setVisible(true);
            btnPic2.setVisible(true);
            MiddleName2.setVisible(true);
            }
    

    Adding a "if null" statement. Although in this use. I reverse it. Thank you for the comments and answers. I have been able to come up with this solution.