其实我从来没有遇到过这样的问题,但是这次让我不舒服。
该程序从用户那里获取一个文本字段,并从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);
}
}
}
我想念什么?我该如何解决?
编辑:
这是堆栈跟踪。
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)
最佳答案
我已经解决了这个问题,当我的图像列在数据库中为空时,
imageHold.setIcon( new ImageIcon( path ) );
这使nullpointer异常。
我做到了:
if( path != null )
imageHold.setIcon( new ImageIcon( path ) );
问题解决了。
关于java - 找不到正确的匹配时,java程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27995151/