2012-02-12 30 views
1

我無法從mySQL數據庫中獲得任何意義。我傳遞一個有效的查詢,應該返回一行。然而,它永遠只能返回我0的int resultsTomcat,沒有來自Result set的數據?

public String getResultSet(String query) throws SQLException{ 
      ResultSet rs = null; 
      int results=0; 
      try { 
       con = ds.getConnection(); 
       Statement stmt = (Statement) con.createStatement(); 
       rs = stmt.executeQuery(query); 

        while(rs.next()){     
         results = rs.getInt("location_id");    
        }   

       } catch (Exception ex){    
      } finally { 
       if (con != null) con.close(); 
      }   
      return Integer.toString(results);   
     } 

沒有錯誤的初值被拋出,可能一些指​​教一下我做錯了嗎?

TIA

+0

你用調試器試過看看你是否真的用rs.next()輸入while循環嗎? – Stainedart 2012-02-12 00:20:07

+0

您是否在數據庫中運行查詢並驗證它是否返回結果? – Perception 2012-02-12 00:26:21

+0

是的查詢是有效的,它確實進入while循環。你認爲代碼看起來有效嗎? – 2012-02-12 00:30:51

回答

1

看起來你有Exception一個空體的catch塊。這將捕獲並默默忽略任何SQL等例外。然後,您將退出try/catch,並返回results ...仍然爲零。


你在做什麼是「擠壓」異常;即捕獲它並扔掉它而不做任何恢復或錯誤報告。這是不好的做法。更糟糕的是,您正在爲Exception做這個。這意味着您不僅正在爲您(可能)期望發生的已檢查異常執行此操作,而且還要處理您無法預料的所有未檢查異常。

+0

這只是沒有任何行動,就是這樣。我不明白這會如何影響ResultSet? – 2012-02-12 00:37:11

+0

@Eric Banderhide如果拋出異常怎麼辦?如果你有一個空的catch子句,你甚至不會知道是否有錯誤。 – nos 2012-02-12 00:39:01

+0

這個異常在Tomcat上打印到哪裏,是Catalina.out? – 2012-02-12 00:49:12

0

沒有任何例外,因爲你沒有打印它們而捕獲它們。如果有的話,你永遠不會看到它們,因爲你的catch塊是空的。

相關問題