其实我从来没有像这样的问题,但这次它让我感到不舒服。java程序崩溃时找不到合适的匹配
该程序从用户处获取文本字段,并从PostgreSQL的SQL中搜索正确的匹配。它工作正常,但是当我输入不在数据库中的东西时,程序崩溃或发生了什么,我的意思是它没有响应任何事情。如果这里可能有帮助的是代码的相关部分:
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);
}
}
}
我在想什么?我该如何解决这个问题?
编辑:
这是堆栈跟踪。
Uncaught error fetching image:
java.lang.NullPointerException
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at sun.awt.image.FileImageSource.getDecoder(FileImageSource.java:53)
at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:263)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:205)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:169)
任何堆栈跟踪? – roeygol
并且还指示哪条线路导致异常。请尽量使这个问题尽可能完整和可回答。 –
'updateComponentTreeUI'没有做你认为的事情,应该永远不要用它来执行UI状态的基本更新,效率很低 – MadProgrammer