IDataReader - любой способ получить общее количество строк? - PullRequest
8 голосов
/ 18 июля 2011

Есть ли способ получить общее количество строк, возвращаемых из SQL-запроса (из IDataReader) перед итерацией по строкам, используя reader.Read();?

Ответы [ 4 ]

10 голосов
/ 18 июля 2011

Нет.

IDataReader - это простое представление результатов только для пересылки;он не может получить счет.

5 голосов
/ 18 июля 2011

Нет, считыватель данных не вернет счет в первую очередь.Однако, если вам нужно это сделать, используйте два запроса, которые возвращают несколько наборов результатов.

, например, в SQL Server:

sql = "SELECT COUNT(1) FROM A; SELECT * FROM A;"

Повторять наборы результатов.Используйте IDataReader во втором наборе результатов.

Сервер базы данных должен быть в состоянии сделать это довольно быстро, если он использует соответствующие индексы.

4 голосов
/ 12 сентября 2012

За прошедшую дату, но есть способ, который сработал для меня, потребовалось время, чтобы получить, потому что я отстой в формулировке моих поисков в Google.

dbCommand.Connection.Open();
//dbReader = dbCommand.ExecuteReader();  I left this here to show not to do the read

searchCount = dbCommand.ExecuteScalar(); // this line returns the value count
                                         // from my tests on my reader it works perfectly
0 голосов
/ 18 июля 2011

Количество строк рассчитывается только когда вы читаете DataReader, но я не получил его, почему вы хотите узнать количество строк перед чтением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...