我正在为一项家庭作业而苦苦挣扎,并且被一些 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() 并得到相同的错误。当您知道只返回一条记录时,我找不到任何有关如何正确获取结果的示例。
帮助!
编辑:好的,我发现我的问题的一部分是我没有得到一个结果集,而我应该期望得到一个结果集。有什么想法吗?
更新:我已经测试了我的代码,使用普通语句和纯字符串查询代替,它工作得很好。所以问题出在我对准备好的语句的使用上。有人可以检查我是否在使用吗?通配符正确吗?谢谢!
最佳答案
据我所知,列名可能不是参数...
关于java - 如何处理您知道其中只有一条记录的 ResultSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8283786/