DbDataReaderを使用しているのですが、
全データを読み込む前に、全レコード数を取得する方法はないのでしょうか?
Javaでいうところの、ResultSet.last()、rs.getRow()です。
引き続き調べてみたのですが、どうやらないみたいですね。
ところで
// 事前レコード数チェック
int count = 0;
while (reader.Read())
{
count++;
}
最後まで、Read()したあと、readerを最初に巻き戻すことも
できないんですね。(できないんですよね?)
HasRows()とか、あるんだったらCountプロパティがほしかった。
自分も知りたかったので調べてみました。
.Netですよね?
SQL文を使って全件数を出して、それを取得すれば何とかなりました。
自分はOLE DBでしたが、多分同じ方法でいくはず?です。
サンプル
string strSQL = SELECT COUNT(*) FROM あと検索内容!;
OleDbCommand cmd = new OleDbCommand(strAllSQL, conn);
object n = cmd.ExecuteScalar();
メソッド ExecuteScalar は、単一スカラーを返すSELECT文の実行に使うらしいです。
間違った・・・すまん。
誤 OleDbCommand cmd = new OleDbCommand(strAllSQL, conn);
正 OleDbCommand cmd = new OleDbCommand(strSQL, conn);
よだれさん、ありがとうございます。(すごいハンドル名だ(w
実は、私も既にCOUNT文で代替してしてしまいました。
ただ、これだと余分にCOUNT文を実行しなければいけないのでパフォーマンスをちょっと
心配しています。