1

我想执行一个选择查询并能够获得结果的计数,而不像 TOAD 那样使用“COUNT(*)”。这个概念是让用户可以选择输入他想要的任何“选择查询”并为他计算结果的数量。

try {
   selectStatement = globalConnection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
   ResultSet selectResultSet = selectStatement.executeQuery(selectStatementString);
   selectResultSet.last();
   int countOfResults = selectResultSet.getRow();
   writeInLabel(kllStatusLabel, "Count Finished: Found " + countOfResults + " Inserts");
} catch (SQLException ex) {
   writeInLabel(kllStatusLabel, "Error executing select query.");
}

此代码在行中延迟很多:“selectResultSet.last();”。TOAD 以更少的延迟做到这一点。(右键单击-> 记录计数)。即使我在 TOAD 中一直向下滚动结果表,它也会更快。

TOAD 如何获得记录数?

好的,我知道了,我将使用 count(*) 并使用第二个 ResultSet 来显示我的结果。

ResultSet selectResultSet = selectStatement.executeQuery("select count(*) from (" + selectStatementString + ")");
int countOfResults = 0;
if (selectResultSet.next()){
   countOfResults = selectResultSet.getInt(1);
}
4

2 回答 2

1

TOAD 可能正在选择@@rowcount或其他一些特定于数据库的结果元数据。如果您想要结果的大小,请明确询问数据库(使用COUNT()

如果您使用的是 mysql,那么您可以使用ROW_COUNT().

于 2010-12-20T12:24:07.573 回答
0

最好COUNT()靠近数据库,提供一个单独的存储过程,专门包含带有计数的选择,并在需要时从代码中访问该存储过程。

于 2010-12-20T12:22:50.623 回答