- PR -

SELECT文を実行した結果のレコード件数の取得方法

1
投稿者投稿内容
しん
常連さん
会議室デビュー日: 2004/04/04
投稿数: 48
投稿日時: 2005-10-29 21:52
こんばんは
現在、自宅で試せる環境にありませんので質問させていただきます。
題名にもあるようにSQL分にてセレクトされたレコードの件数を取得するメソッド
はあるのでしょうか?
リファレンスを見てみたところResultSetインターフェースの「getFetchSize」
あたりが使えるのではないかと思い
googleで「getFetchSize レコード数」で検索したところ
「一回あたりにFetchするレコード数」とあったのでこれは違うかなという気がしました。
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2005-10-29 23:33
javaというよりSQLの話ですかね。

select count(*) from table_name;
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-10-30 00:55
SQLの実行結果って、必ずSQLのクライアントに全て返されるわけじゃないので、
レコード件数が取得できる事が保障されていません。
だからJDBCドライバではサポートされていませんね。

MicrosoftのADOでもレコード数を返すプロパティがありますが、
カーソルがサーバ上では取得はできないようになっています。

結局のところEOFになるまでフェッチしないとわからないんですね。
なので、ぽちさんのような方法で事前に件数を取得するのが確実ではないでしょうか。
しん
常連さん
会議室デビュー日: 2004/04/04
投稿数: 48
投稿日時: 2005-10-30 23:05
お返事遅れて申し訳ありません。
そうでしたか。COUNTをとることにします。どうもありがとうございました。
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2005-10-31 02:08
もう完結しているようですが……

java.sql.ResultSetで取得したデータの数を得たいのですが?

---

私が今担当しているプロジェクトでもCOUNT(*)を発行しています。結局、これが一番簡単、確実っぽいです。

[ メッセージ編集済み 編集者: 永井和彦 編集日時 2005-10-31 02:15 ]
明智重蔵
大ベテラン
会議室デビュー日: 2005/09/05
投稿数: 127
投稿日時: 2005-10-31 15:08
Oracleだったら
select句にcount(*) over() as RecordCount
を追加するなんて方法もアリ


OracleSQLパズル
http://oraclesqlpuzzle.hp.infoseek.co.jp
1

スキルアップ/キャリアアップ(JOB@IT)