java - 如何处理您知道其中只有一条记录的 ResultSet

标签 java sql

我正在为一项家庭作业而苦苦挣扎,并且被一些 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/

相关文章:

java - UnreachableBrowserException 尝试使用 IEDriver 在 Selenium Webdriver 中启动

java - 为什么 getFirstResult() 和 getMaxResults() 不从数据库返回第 x 到 y 行的 block ?

java - 如何读取opencsv中的utf-8字符

sql - Hive 将无法识别查询中第二个条件中的列名

java - hibernate : strategy=GenerationType value for oracle

java - 自 Google Fit App 更新以来,Google Fit 数据模式发生了变化,实现显然已中断

java - 如果 Activity 位于图书馆项目中,则未找到 Activity 异常

java - 从用户搜索条件动态创建 WHERE 子句

php - Doctrine ORM 中的类表继承

mysql - 计算 X 天内在不同表中输入了多少行的最有效方法?