JDBC ResultSet从不同的表中获取列

时间:2012-06-26 16:10:10

标签: jdbc

我想从涉及许多表的查询中检索数据。 我有一个查询如下

    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
谁知道为什么?

2 个答案:

答案 0 :(得分:4)

您必须使用next()方法。

你应该知道ResultSet隐含地位于第一行之前的位置,所以你需要调用next来获取当前位置,如果有效,它返回true,否则返回false(光标位于最后一行之后)。

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


注意:您也可以使用rs.getString(<columnName>)但是如果您知道语句的外观,我建议您使用index而不是columnName。

答案 1 :(得分:0)

调用resultSet.executeQuery()后,您需要调用next()从db中提取记录

之后,您可以调用Java API提供的setXxx()