我正在努力完成一项家庭作业,并且正在挂上一些SQL查询。如何处理你知道的结果集只有一条记录
我的查询是询问一个库存数据库的某些项目的数量。给定主键,查询请求表中名称为quantity_in_stock的列。
我已经初始化了一些准备好的语句。这是我在这里使用的一个:
stmtFindColumn = Database.getConnection().prepareStatement(String.format("select ? from %s where %s = ?",
INVENTORY_TABLE_NAME, SKU));
现在调用一个单独的方法。我将它传递给一个静态常量QTY_IN_STOCK,它被定义为“quantity_in_stock”和项目的SKU编号,它是表中的主键。
private int getIntegerFromTable(String column, String key) {
int toReturn = 0;
try {
// Complete the prepared statement
stmtFindColumn.setString(1, column);
stmtFindColumn.setString(2, key);
ResultSet result = stmtFindColumn.executeQuery();
toReturn = result.getInt(column);
} catch (SQLException e) {
LOG.error(e.getMessage());
e.printStackTrace();
}
return toReturn;
}
当我运行查询,我得到一个SQL异常,告诉我:无效的列名quantity_in_stock。
我试过使用while循环处理result.next()并得到相同的错误。当你知道只有一条记录被返回时,我找不到任何如何正确得到结果的例子。
帮助!
编辑:好的,我发现我的问题的一部分是我没有得到一个结果集,我应该期待一个。有任何想法吗?
更新:我已经测试了我的代码,使用花园多种语句和普通字符串查询来代替,它工作得很好。所以问题在于我使用准备好的陈述。有人可以检查我是否使用?通配符正确吗?谢谢!
啊哈。让我尝试一下,我会回来......' – deanTheBean
就是这样!你们真棒。周六晚上10点我还能在哪里得到这个问题的答案! – deanTheBean