我正在尝试创建一个简单的方法,它接收一个 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.
原文由 user818700 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您有权访问生成此结果集的准备好的语句,则可以使用
这会以一种可以倒回光标的方式准备您的语句。这也记录在 ResultSet Javadoc 中
然而,一般来说,前进和后退游标对于大型结果集来说可能效率很低。 SQL Server 中的另一个选项是直接在 SQL 语句中计算总行数: