2015-01-17 37 views
-2

其實我從來沒有像這樣的問題,但這次它讓我感到不舒服。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) 
+2

任何堆棧跟蹤? – roeygol

+0

並且還指示哪條線路導致異常。請儘量使這個問題儘可能完整和可回答。 –

+2

'updateComponentTreeUI'沒有做你認爲的事情,應該永遠不要用它來執行UI狀態的基本更新,效率很低 – MadProgrammer

回答

1

我有固定的問題,當我的image列是我的數據庫空,

imageHold.setIcon(新的ImageIcon(路徑));

這使得空指針異常。

而我所做的:

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

和問題就解決了。

+1

實際上,您的代碼有可能會使資源處於打開狀態並降低程序的效率,請參閱[在此帖子中](http://stackoverflow.com/questions/27977123/db2-and-java-adding-data-to- database-through-gui/27977211#27977211)瞭解更好的資源管理的更多信息... – MadProgrammer