我想执行一个select查询并能够获得结果的计数,而不像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);
}
答案 0 :(得分:1)
TOAD可能正在选择@@rowcount
或其他一些特定于数据库的结果元数据。
如果您想要结果的大小,请明确询问数据库(使用COUNT()
)
如果您使用的是mysql,则可以使用ROW_COUNT()
。
答案 1 :(得分:0)
最好使COUNT()
靠近数据库,提供一个单独的存储过程,该过程专门包含带有计数的select,并在需要时从代码中访问该存储过程。