为什么在下面的代码中需要用到resultSet.getInt(1);?

问题描述 投票:0回答:1

据我所知 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;
}
java jdbc count
1个回答
2
投票

这个方法 executeQuery() 返回一个 ResultSet 对象,而不是一个整数值。语句。

SELECT COUNT(*) FROM Gyujtoallomasok

计算表中的行数 并将此结果以 无名 专栏 COUNT(*). 为了得到这个结果,你必须从 ResultSet 对象的方法 getInt(),因为结果是一个整数,通过传递索引 1 的列(它是第1列,也是唯一一列,它在 ResultSet):

resultSet.getInt(1)

如果你把这一列别名成这样

SELECT COUNT(*) AS counter FROM Gyujtoallomasok

你也可以用它的值。

resultSet.getInt("counter")

2
投票

getInt 仍然是需要的,因为这一行。

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

是把从数据库中返回的值放到了一个叫做 结果集 也就是 "代表数据库结果集的数据表".

然后,你必须在ResultSet中迭代,以检索你的答案,这就是 resultSet.next()resultSet.getInt(); 正在做。

© www.soinside.com 2019 - 2024. All rights reserved.