java程序在找不到正确的匹配项时崩溃
事实上,我从来没有遇到过这样的问题,但这次它让我感到不舒服 程序从用户处获取一个文本字段,并从SQL中搜索一个正确的匹配项,即PostgreSQL。它工作正常,但当我输入数据库中没有的东西时,程序崩溃或发生了什么事情,我的意思是它没有响应任何东西。如果可能有帮助,请参阅代码的相关部分:java程序在找不到正确的匹配项时崩溃,java,swing,postgresql,crash,Java,Swing,Postgresql,Crash,事实上,我从来没有遇到过这样的问题,但这次它让我感到不舒服 程序从用户处获取一个文本字段,并从SQL中搜索一个正确的匹配项,即PostgreSQL。它工作正常,但当我输入数据库中没有的东西时,程序崩溃或发生了什么事情,我的意思是它没有响应任何东西。如果可能有帮助,请参阅代码的相关部分: public void actionPerformed(ActionEvent e) { String path = null; JButton clicked = (JButton) e.get
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不完整,它缺少最重要的信息:代码中的哪一行引发异常,这一行包含什么代码,因此我们只能猜测我的错误在哪里,这是一个很多人都不喜欢的游戏。实际上,您的代码有可能使资源处于打开状态,从而降低程序的效率,查看有关更好的资源管理的更多信息。。。