1

嗨,你们能告诉我我的代码有什么问题吗?当我将我的 ResultSet 设置为“SELECT * FROM Table1”时,它工作得很好,如果它是“SELECT key, itemName, itemPrice, itemQuantity FROM Table1”但是当我尝试只使用其中一个或两个时它会打印出一个错误列未找到。

我的数据库存储在 MS Access 中。这是我的主要内容:

try (Connection cn = DBUtil.getConnection(DBType.MS_ACCESS);
    Statement st = cn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
    ResultSet rs = st.executeQuery("SELECT Table1.key FROM Table1");) {

    Table1.displayData(rs);

} catch (SQLException ex) {
    DBUtil.processException(ex);
}

那就是 Table1.java:

public class Table1 {
    public static void displayData(ResultSet rs) throws SQLException {
        // to print out my database
        while (rs.next()) {
            StringBuffer buffer = new StringBuffer();

            buffer.append(rs.getString("key") + " ");
            buffer.append(rs.getString("itemName") + " ");

            double price = rs.getDouble("itemPrice");
            DecimalFormat pounds = new DecimalFormat("£#,##0.00");
            String formattedPrice = pounds.format(price);
            buffer.append(formattedPrice + " ");

            buffer.append(rs.getInt("itemQuantity") + " ");

            System.out.println(buffer.toString());
        }
    }
}
4

2 回答 2

2

您的结果集将仅包含您在选择查询中定义的列。所以如果你这样做

rs.getString("itemName")

那么您必须在查询中选择该列,而您没有

st.executeQuery("SELECT Table1.key FROM Table1")
                                  ^-----------------column missing

st.executeQuery("select key, itemName, itemPrice, itemQuantity from Table1")
于 2013-01-08T11:10:13.637 回答
-1

你应该使用
buffer.append(rs.getString("Table1.key") + " ");

结果集具有您在选择查询中给出的名称的数据。(key = Table1.key)

于 2013-01-08T11:13:20.410 回答