gpt4 book ai didi

java - 如何在 Java 中使用 ResultSet 获取行数?

转载 作者:IT老高 更新时间:2023-10-28 13:52:29 29 4
gpt4 key购买 nike

我正在尝试创建一个简单的方法,它接收一个 ResultSet 作为参数并返回一个包含 ResultSet 行数的 int。这是一种有效的方式吗?

int size = 0;
try {
while(rs.next()){
size++;
}
}
catch(Exception ex) {
System.out.println("------------------Tablerize.getRowCount-----------------");
System.out.println("Cannot get resultSet row count: " + ex);
System.out.println("--------------------------------------------------------");
}

我试过了:

int size = 0;
try {
resultSet.last();
size = resultSet.getRow();
resultSet.beforeFirst();
}
catch(Exception ex) {
return 0;
}
return size;

但我收到一个错误提示

com.microsoft.sqlserver.jdbc.SQLServerException: 
The requested operation is not supported on forward only result sets.

最佳答案

如果您有权访问导致此结果集的预准备语句,则可以使用

connection.prepareStatement(sql, 
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);

这会以您可以倒回光标的方式准备您的语句。这也记录在 ResultSet Javadoc

然而,一般来说,前向和后退游标对于大型结果集可能效率很低。 SQL Server 中的另一个选项是直接在 SQL 语句中计算总行数:

SELECT my_table.*, count(*) over () total_rows
FROM my_table
WHERE ...

关于java - 如何在 Java 中使用 ResultSet 获取行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7886462/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com