2012-06-26 48 views
2

我想從涉及多個表的查詢中檢索數據。 我有一個查詢,如下所示JDBC ResultSet從不同的表中獲取列

String sql = "SELECT " 
      + "s.Food_ID AS 'Sales_FoodID', " 
      + "f.Food_Name AS 'foodName' " 
      + "FROM Ordering o, Sales s, Food f" 
      + " WHERE o.Table_No = " + tableNo + "" 
      + " AND o.Paid = '" + NOT_PAID + "'" 
      + " AND s.Order_ID = o.Order_ID" 
      + " AND f.Food_ID = s.Food_ID;"; 
    resultSet = statement.executeQuery(sql); 

沒有發現錯誤,當我運行程序,但在我加入這行得到一個表的列數據:

String orderID = resultSet.getString("foodName"); 

我正在給這個錯誤:

java.sql.SQLException: Column not found 

有人知道爲什麼嗎?

+0

上設置斷點,'字符串的orderID = resultSet.getString(」 foodName「);'看看'resultSet'包含什麼。 – ZnArK

+0

@ZnArK發生這種情況是因爲ResultSet.getString(String)通過其名稱而不是其別名/標籤獲取該列。這實際上是「任何人知道爲什麼?」這個問題的答案,但由於它不能解決問題,所以我會留下它作爲評論。 – Goodwine

回答

4

您必須使用next()方法。

你應該知道,ResultSet隱式地定位在位置第一行之前,所以你下一步需要調用來獲取當前位置,如果是有效的,它返回true,否則返回false(遊標定位在最後一行之後)。

rs = statement.executeQuery(sql); 
while (rs.next()) { 
    String orderID = rs.getString(2); 
} 


注:您可以使用也rs.getString(<columnName>)但如果當你知道你的發言的樣子,我建議你使用索引而不是列名。

0

調用後,resultSet.executeQuery()需要將next()調用從DB

拉動記錄後,你可以調用setXxx()用的Java API提供