sql.exception:找不到列

时间:2013-01-08 11:07:55

标签: java sql ms-access-2010

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

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

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());
        }
    }
}

2 个答案:

答案 0 :(得分:2)

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

rs.getString("itemName")

然后您必须在查询中选择该列,而不是

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

待办事项

st.executeQuery("select key, itemName, itemPrice, itemQuantity from Table1")

答案 1 :(得分:-1)

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

resultset具有您在select查询中给出的名称数据。(key = Table1.key)