【发布时间】:2011-12-14 17:56:04
【问题描述】:
我正在尝试创建一个简单的方法,它接收一个 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.
提前感谢指点!
【问题讨论】:
-
不能把sql语句改成
SELECT COUNT(*) ...吗? -
为什么在调用填充结果集的查询之前不执行“select count(*)”?但是 ForwardOnly RS 取决于您打开连接的方式(需要传递一些参数)。查看您的 jdbc 驱动程序文档了解详细信息。
-
(OT;您可能需要考虑使用实际的日志库来处理诸如输出方法名称等事情)