【问题标题】:Why is the resultSet.getInt (1); necessary in the following code?为什么是resultSet.getInt(1);在下面的代码中有必要吗?
【发布时间】:2020-05-10 10:27:33
【问题描述】:

据我所知getInt(column index)从当前行检索列值,但我不明白它在这种情况下的用途。 SQL语句不是SELECT COUNT(*) FROM Gyujtoallomasok 已经计算表中的行数了吗?如果是这样,为什么我们需要其余的?

public int count() {
    try (Connection connection = DriverManager.getConnection(URL);
         Statement statement = connection.createStatement()) {

        ResultSet resultSet = statement.executeQuery("SELECT COUNT(*) FROM Gyujtoallomasok");
        if (resultSet.next()) {
            int count = resultSet.getInt(1);
            return count;
        }
    } catch (SQLException exception) {
        // TODO: log
    }
    return -1;
}

【问题讨论】:

  • 如果你删除它会发生什么? (作为一个教学问题:如果你认为某事是不必要的,你必须认为没有它会发生什么)
  • COUNT(*) 将在 ResultSet 中创建类型为 int 的列,以表示行数。您正在从整数类型列中读取值,这就是 resultSet.getInt(1) 您使用此语句的原因。请参阅文档以了解更多信息Here

标签: java jdbc count


【解决方案1】:

方法executeQuery() 返回一个ResultSet 对象,而不是一个整数值。
声明:

SELECT COUNT(*) FROM Gyujtoallomasok

统计表中的行数,并将结果返回到未命名COUNT(*)
要获得此结果,您必须使用方法getInt()ResultSet 对象中提取它,因为结果是整数,通过传递列的索引1(它是@987654328 中的第一个也是唯一的列@):

resultSet.getInt(1)

如果您像这样为列添加别名:

SELECT COUNT(*) AS counter FROM Gyujtoallomasok

您还可以通过以下方式获得它的价值:

resultSet.getInt("counter")

【讨论】:

    【解决方案2】:

    getInt 仍然需要,因为这一行:

    ResultSet resultSet = statement.executeQuery("SELECT COUNT(*) FROM Gyujtoallomasok");
    

    将从数据库返回的内容放入ResultSet,即“表示数据库结果集的数据表”

    然后,您必须遍历 ResultSet 以检索您的答案,这就是 resultSet.next()resultSet.getInt(); 正在做的事情。

    【讨论】:

      猜你喜欢
      • 2010-12-30
      • 1970-01-01
      • 2020-04-01
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 2020-05-25
      • 2018-12-30
      • 2020-10-27
      相关资源
      最近更新 更多