| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Базы данных под .NET > Как узнать колличество строк в таблице |
| Автор: Teran 31.5.2006, 13:03 | ||
вот пример программы которая считывает таблицу в массив
здесь я знаю что таблица имеет 10 строк и 5 сстолбцов но как мне задать массив когда я не буду знать колличество строк заранее Его можно както получить с помощю OleDbDataReader? |
| Автор: andrx 31.5.2006, 13:28 |
| В книге : ADO.NET Сборник рецептов для пофессионалов ISBN 5-469-00239-X, стр.101 по этому поводу говорится: Проблема Требуется определить, возратил ли только что выполненный запрос хотябы одну запись. Решение Используйте свойство DataRowCollection.Count, DataReader.HasRows или метод DataReader.Read(). В коде примера создается и наполняется данными объект DataTable, после чего с помощью свойства Count объекта DataRowCollection определяется ... Вообщем выходит, что для решения проблемы необходимо либо использовать DataTable или делать цикл с DataReader.Read(). Как вариант решения проблемы, перед объявлением и заполнением Mass [] можно выполнить while (dr.Read()) {MassX++} |
| Автор: Дрон 31.5.2006, 13:46 | ||||
Мне кажется решить эту задачу гораздо проще, чем высчитывать строки. Сделай так (пример для .NET 1.1, в .NET 2.0 уже есть типизированные коллекции -- там ещё проще):
А вообще не понимаю, зачем тебе такие извращения? Почему бы не использовать нормальный DataSet? |
| Автор: andrx 31.5.2006, 13:56 |
| Teran Может следует прислушаться к Дрон ! А для перемещения в начало DataReader ничего лучшего не придумал кроме как : dr.Close(); dr = cmd.ExecuteReader(); |
| Автор: Teran 31.5.2006, 14:07 |
у меня DataReader работает раза в 2 быстрее а повторный вызов тоже займет некоторое процессорное время (а когда все это приплюсуеш получатся - тормоза проги) |
| Автор: andrx 31.5.2006, 14:16 | ||
Teran
ну а как же конечно, поэтому все таки может прислушаться к Дрон и использовать ArrayList вместо массива ? |
| Автор: Teran 31.5.2006, 15:28 |
я так и сделал всем спасибо! |
| Автор: arilou 3.6.2006, 11:08 | ||
Именно потому, что DataReader работает быстрее, ты не можешь его вернуть в начало |
| Автор: Mascon 28.6.2006, 20:49 |
| как вариант можно сделать и так cmd = select count(*) from .... тоесть повторение запроса который наполняет dr int Row_count = (int)cmd.ExecuteScalar(); а потом выполняете запрос наполняющий dr... нет не спрашивайте я не знаю может ли в принципе измениться число строк между запросами..... если вас устроит передача работы по подсчету строк серверу базы данных. это немного лучше чем dr.Close() и тд... |