![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
FelikZ |
|
|||
![]() Старый Маразматик ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 1.12.2006 Где: Vault 13 Репутация: нет Всего: 5 |
есть такого типа запрос:
Конечно можно сделать еще один запрос с "count" но может можно как-то без этого обойтись? Спасибо! -------------------- ![]() |
|||
|
||||
emmanuil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 9.1.2007 Репутация: 1 Всего: 3 |
датаРидером не узнаешь, если только после этого кода
[code=csharp] int i = 0; while (sdr.Read()) { i++; } [\code] Либо загоняй результат в таблицу, либо делай запрос Добавлено через 1 минуту и 45 секунд Или в том же запосе возврати вместе со всеми прочими строками еще и количество строк |
|||
|
||||
dio30 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.10.2006 Репутация: нет Всего: нет |
sdr.RecordsAffected() не пробовал?
|
|||
|
||||
FelikZ |
|
|||
![]() Старый Маразматик ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 1.12.2006 Где: Vault 13 Репутация: нет Всего: 5 |
[/quote]
Сейчас в БД у меня записи две а "sdr.RecordsAffected" вернуло вобще -1
Можно пример плз -------------------- ![]() |
|||
|
||||
emmanuil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 9.1.2007 Репутация: 1 Всего: 3 |
RowAffected совсем не пойдет!
The number of rows changed, inserted, or deleted; 0 if no rows were affected or the statement failed; and -1 for SELECT statements. Ридером не узнать никак, ИМХО, только так как я написал выше! Добавлено через 4 минуты и 31 секунду вот самый простой sql пример
Добавлено через 6 минут и 18 секунд вместо ридера используй адаптер и таблицу |
|||
|
||||
emmanuil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 9.1.2007 Репутация: 1 Всего: 3 |
код не проверял!
вот вместо ридера попробуй using (SqlConnection scon = new SqlConnection("Database=asp_forum; Data Source=localhost; Integrated Security=true;")) { using (SqlDataAdapter da = new SqlDataAdapter("select U_ID,U_Login from Users", scon)) { using (DataTable dt = new DataTable()) { int rowCount = da.Fill(dt); // должен возвратить количество // если не возвратил, то тогда так da.Fill(dt); int rowCount = dt.Rows.Count; if (rowCount == 0) return; for (int i = 0; i < rowCount; i++) { MessageBox.Show(dt.Rows[i]["col_name"].ToString()); } // или так foreach (DataRow dr in dt.Rows) { MessageBox.Show(dr["col_name"].ToString()); } } } } Добавлено через 4 минуты и 30 секунд SqlDataReader для быстрого считывания строк из базы, он не ставит перед собой цели знать весь набор данных, только строку! |
|||
|
||||
FelikZ |
|
|||
![]() Старый Маразматик ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 1.12.2006 Где: Vault 13 Репутация: нет Всего: 5 |
emmanuil, Спасибо так работает!
-------------------- ![]() |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Рассмотрим предложенные способы:
1. Прогон всех значений DataReader в цикле. Стоит только представить, что запрос возвращает 100000... записей, и становится просто страшно ![]() 2. Заполнение таблицы через DataAdapter. Аналогично первому способу, производительность оставляет желать лучшего. 3. Получать количество строк в запросе. Здесь экономится и быстродействие, и трафик. emmanuil, предложил реализацию через хранимую процедуру. Почему бы и нет... хотя нужды в этом никакой нет, ведь достаточно воспользоваться агрегатной функцией count: "select count(U_ID) from Users". |
|||
|
||||
emmanuil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 9.1.2007 Репутация: 1 Всего: 3 |
А это разве не COUNT?!
![]()
Да и где написано, что я предлагал хранимку?! Тот запрос везде пойдет! А на счет адаптера, то в первоначальном примере FelikZ пробегался по всем строкам ридером, так что не имеет значения, всеравно придется пробегать по всем строкам! Один запрос лучше делать тогда, когда просто нужно узнать количество, а в этом случае это будет лишнее обращение к базе. Все зависит от конкретной задачи! А для первоначального примера, думаю лучшим будет пример с адаптером, почему я уже написал! |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
emmanuil, ага, я немного невнимательно прочитал первый пост.
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |