![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.2ベストアンサー
- 回答日時:
select count(*) を使用せず
カーソルを移動させたくないとなると
先の返答にもあるとおり、
ResultSet#last()で最終行に移動後、
ResultSet#getRow() で取得
ResultSet#first()でカーソルを戻す
という方法になるでしょう。
ただし、これを行う場合、以下のことが必要です。
・JDBCがJDBC2.0のスクロールに対応している
・ステートメントを生成する際に
TYPE_SCROLL_SENSITIVEまたは
TYPE_SCROLL_INSENSITIVEを指定する
(例)
con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ただし、この方法だと型が特殊なデータなどで
取得できない場合があります。
この制約はプロダクト依存ですので
PostgresSQLの資料から調べてください。
No.1
- 回答日時:
DBの実装によるとは思うのですが、
普通はDBにSQLを発行して、ResultSetを取得した時点では、対象の全てのレコードを取得しているわけではないです。発行した時点で何レコードあるかは未知です。
何レコードあるかは、全レコード取得して初めて判明すると思います。
(ResultSetが生成された時点では、まだ全レコード取得しているわけではなく、必要に応じて内部で取得しています。例えば100レコードずつとか)
それをふまえたうえで、行数を取得するには、ResultSet#last() で最終行に移動して、ResultSet#getRow()で行番号を取得すれば分かると思います。先頭に戻すには、ResultSet#first()とします。
ただし、それは「select count(*) from ta」とするよりもはるかに効率の悪いものになるかもしれません。
#他の言語で、行数が取得できるAPIがあったかも知れませんが、同じように効率が悪い事を内部でしているのだと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PostgreSQL 列が存在しないと言われる 2 2023/02/10 18:33
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データ数をカウントしたいのですが
-
VB.NETで DataRow()を利用して...
-
VBA:小数点以下の数字を取得で...
-
VBAでActiveDirectoryのユーザ...
-
count(*)で取得した値をJAVAの...
-
ListViewで複数選択された項目...
-
JFreeChartの折れ線グラフの太...
-
JavaScriptでWindowsログオンID...
-
VBScriptで数値にコンマを付け...
-
Struts2 <s:select>タグの値取...
-
getParameter と getAttribut...
-
vbaで、オートシェイプ文字幅と...
-
EXCELのリストボックスを選択し...
-
ActiveWorkbook.Path取得できない
-
ExcelでNTPサーバーから時刻を...
-
VBA Shapesの座標からセル位置...
-
IFRAME内のURLを取得したです。
-
エクセルVBAで複数選択できるよ...
-
like演算子内に変数って使えな...
-
VBでFTPサーバ側のファイルの更...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
count(*)で取得した値をJAVAの...
-
データ数をカウントしたいのですが
-
VBA:小数点以下の数字を取得で...
-
VBAでActiveDirectoryのユーザ...
-
ListView 項目の選択/選択解除...
-
Flexgridで選択行の列の値を取...
-
getParameter と getAttribut...
-
like演算子内に変数って使えな...
-
ListViewで複数選択された項目...
-
JavaScriptでWindowsログオンID...
-
時間を分に変換するプログラム
-
エクセルVBAで複数選択できるよ...
-
Spreadの選択行の取得について
-
JavaScriptにおいてコンピュー...
-
コンボボックス表示文字列を取...
-
VBA リストボックス内の値を複...
-
利用者側のMACアドレスを取得し...
-
「Excel VBA」 Webクエリ マク...
-
Yahoo! JAPANのID取得について
おすすめ情報