java程序在找不到正确的匹配项时崩溃

java程序在找不到正确的匹配项时崩溃,java,swing,postgresql,crash,Java,Swing,Postgresql,Crash,事实上,我从来没有遇到过这样的问题,但这次它让我感到不舒服 程序从用户处获取一个文本字段,并从SQL中搜索一个正确的匹配项,即PostgreSQL。它工作正常,但当我输入数据库中没有的东西时,程序崩溃或发生了什么事情,我的意思是它没有响应任何东西。如果可能有帮助,请参阅代码的相关部分: public void actionPerformed(ActionEvent e) { String path = null; JButton clicked = (JButton) e.get

事实上,我从来没有遇到过这样的问题,但这次它让我感到不舒服

程序从用户处获取一个文本字段,并从SQL中搜索一个正确的匹配项,即PostgreSQL。它工作正常,但当我输入数据库中没有的东西时,程序崩溃或发生了什么事情,我的意思是它没有响应任何东西。如果可能有帮助,请参阅代码的相关部分:

public void actionPerformed(ActionEvent e)
{
    String path = null;
    JButton clicked = (JButton) e.getSource();
    if (clicked == loadButton) {
        try {
            PreparedStatement st = connect.prepareStatement("select * from databank where code=?");
            st.setString(1, field.get(0).getText());
            ResultSet rs = st.executeQuery();
            while (rs.next()) {
                for (int i = 0; i < field.size(); i++) {
                    if (i < 7)
                        field.get(i).setText(rs.getString(i + 1));
                    else if (i > 6 && i < 10)
                        field.get(i).setText(Double.toString(rs.getDouble(i + 1)));
                    else if (i > 9 && i < 14)
                        field.get(i).setText(Integer.toString(rs.getInt(i + 1)));
                    else if (i > 13)
                        field.get(i).setText(rs.getString(i + 1));
                    path = rs.getString(15);
                }
            }
            rs.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
            JOptionPane.showMessageDialog(null, "Error Code = 0020");
        } finally {
            imageHold.setIcon(new ImageIcon(path));
            SwingUtilities.updateComponentTreeUI(frame);
            SwingUtilities.updateComponentTreeUI(imageHold);
        }
    }
}
我错过了什么?我怎样才能解决这个问题

编辑:

这是stacktrace

获取图像时出现未捕获错误: java.lang.NullPointerException 在java.io.FileInputStream.FileInputStream.java:138 在java.io.FileInputStream.FileInputStream.java:101 位于sun.awt.image.FileImageSource.getDecoderFileImageSource.java:53 位于sun.awt.image.InputStreamImageSource.doFetchInputStreamImageSource.java:263 位于sun.awt.image.ImageFetcher.fetchloopImageFetcher.java:205 位于sun.awt.image.ImageFetcher.runImageFetcher.java:169
我已经解决了这个问题,当我的数据库中的图像列为空时

imageHold.setIcon新建ImageIcon路径

这使得空指针异常

我做到了:

if( path != null )
    imageHold.setIcon( new ImageIcon( path ) );

问题已经解决。

updateComponentTreeUI没有做您认为应该做的事情,它不应该用于对UI状态执行基本更新,而且效率非常低。您没有打印完整的堆栈跟踪,特别是涉及代码的部分,也没有指出导致异常的行。同样,请帮助我们。@RoeyGolzarpoor:这一行没有帮助,因为这是Java核心类FileInputStream.Java的第138行。当imageHold.setIcon调用new ImageIcon path时,值路径看起来是空的;猜一猜,如果你告诉我为什么我会记得我做错了什么,并且如果你将鼠标箭头悬停在下一个投票按钮上,它可以避免下一个错误,你将看到什么时候应该使用它,其中一种情况是当问题不清楚时。如果您发布的问题stacktrace不完整,它缺少最重要的信息:代码中的哪一行引发异常,这一行包含什么代码,因此我们只能猜测我的错误在哪里,这是一个很多人都不喜欢的游戏。实际上,您的代码有可能使资源处于打开状态,从而降低程序的效率,查看有关更好的资源管理的更多信息。。。