据我所知 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;
}
这个方法 executeQuery()
返回一个 ResultSet
对象,而不是一个整数值。语句。
SELECT COUNT(*) FROM Gyujtoallomasok
计算表中的行数 并将此结果以 无名 专栏 COUNT(*)
. 为了得到这个结果,你必须从 ResultSet
对象的方法 getInt()
,因为结果是一个整数,通过传递索引 1
的列(它是第1列,也是唯一一列,它在 ResultSet
):
resultSet.getInt(1)
如果你把这一列别名成这样
SELECT COUNT(*) AS counter FROM Gyujtoallomasok
你也可以用它的值。
resultSet.getInt("counter")
getInt
仍然是需要的,因为这一行。
ResultSet resultSet = statement.executeQuery("SELECT COUNT(*) FROM Gyujtoallomasok");
是把从数据库中返回的值放到了一个叫做 结果集 也就是 "代表数据库结果集的数据表".
然后,你必须在ResultSet中迭代,以检索你的答案,这就是 resultSet.next()
和 resultSet.getInt();
正在做。