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(*) を使用し、2 つ目の ResultSet を使用して結果を表示します。
ResultSet selectResultSet = selectStatement.executeQuery("select count(*) from (" + selectStatementString + ")");
int countOfResults = 0;
if (selectResultSet.next()){
countOfResults = selectResultSet.getInt(1);
}