Мой вопрос в том, как получить количество строк, возвращаемых запросом, с помощью в C#. Я видел несколько ответов об этом, но ни один из них не был четко определен, кроме одного, который заявляет, что должен делать цикл while с помощью метода Read()
и увеличивать счетчик.Как получить количество строк с помощью SqlDataReader в C#
Моя проблема заключается в том, что я пытаюсь заполнить многомерный массив первой строкой, являющейся именами заголовка столбца, и каждая строка после этого должна быть данными строки.
Я знаю, что могу просто сбрасывать материал в элементе управления List и не беспокоиться об этом, но для собственного личного назидания, и я также хотел бы вытащить данные из массива и из него по мере выбора и отображения его в разных форматах.
Так что я думаю, что я не могу сделать Read()
, а затем увеличиваем ++ путь, потому что это означает, что я должен был бы открыть Read()
, а затем открыть Read()
снова, чтобы получить количество строк, а затем данные столбца.
Просто небольшой пример того, что я говорю о:
int counter = 0;
while (sqlRead.Read())
{
//get rows
counter++
}
, а затем цикл для запуска через колонки и поп
something.Read();
int dbFields = sqlRead.FieldCount;
for (int i = 0; i < dbFields; i++)
{
// do stuff to array
}
Хенк прав: в DataReader нет члена, который позволяет вам получить количество строк, потому что это читатель с прямым доступом. Вам лучше сначала сделать счет, а затем выполнить запрос, возможно, в результате запроса с несколькими результатами, чтобы вы только попали в базу данных один раз. – flipdoubt
Проблема со специализированным подсчетом заключается в том, что существует вероятность того, что счет отличается от числа возвращенных строк, потому что кто-то другой изменил данные таким образом, который приводит к количеству возвращаемых строк. –
Пит, вы правы, для этого потребуется дорогостоящий IsolationLevel. –