为什么resultSet.getInt(1);在以下代码中有必要吗?

时间:2020-05-10 10:27:33

标签: java jdbc count

据我所知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;
}

2 个答案:

答案 0 :(得分:2)

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

SELECT COUNT(*) FROM Gyujtoallomasok

对表中的行进行计数,并在 unnamed COUNT(*)中返回此结果。
要获得此结果,您必须使用方法ResultSetgetInt()对象中提取它,因为结果是整数,通过传递列的索引1(它是第一个和ResultSet中唯一的列):

resultSet.getInt(1)

如果您对列进行这样的别名:

SELECT COUNT(*) AS counter FROM Gyujtoallomasok

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

resultSet.getInt("counter")

答案 1 :(得分:2)

由于此行,仍然需要

getInt

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

正在将数据库返回的内容放入ResultSet,这是“代表数据库结果集的数据表”。

然后,您必须遍历ResultSet来检索resultSet.next()resultSet.getInt();正在做什么的答案。