Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с SqlDataReader 
:(
    Опции темы
Алексеу
Дата 11.5.2009, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 22.5.2008

Репутация: нет
Всего: нет



Здравствуйте!

Сталкиваюсь со странной проблемой, ответа которой не нахожу:

Код

cn.Open();
                    reader = command.ExecuteReader(CommandBehavior.CloseConnection);
                    while (reader.Read())
                    {
                        MessageBox.Show(reader[1].ToString());
                    }


Поочередно выскакивают боксы с нужными данными, а затем когда все данные уже были отображены вылазит исключение "В экземпляре обекта не задана ссылка на объект". Ошибка генерируется по всей видимости там где я выделил жирным. Дебаггером при соединении на уделенный сервер не пройти поэтому приходится гадать, но, в принципе, других вариантов и не дано т.к. далее ошибке вываться негде (месадж бок комментировал).

В МСДН вроде тот же метод. Но я просто в тупике в этой ситуации.

Не подскажите в чем может быть проблема?
Заранее спасибо!
PM MAIL   Вверх
SKrivosein
Дата 12.5.2009, 02:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 9.6.2007
Где: Praha - Прага

Репутация: нет
Всего: 8



Может я ошибаюсь (не зная SQL вопроса), но мне кажется тонкое место здесь -> reader[1].
Кажется индекс должен начинатся с нуля, или ещё лучше вставит там значение с вопроса.


--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
Алексеу
Дата 12.5.2009, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 22.5.2008

Репутация: нет
Всего: нет



SKrivosein, SQL запрос самый обычный - на выборку. Что же до reader[1] это обращение к колонке выборки. По SQL запросу 0-я колонка - ID, 1-я Name. Собственно, идет поочередное отображение всех Name в меседжбоксах.

Это не вызывает исключения. Я указал в первом посте что месадж бок комментировал. 
PM MAIL   Вверх
Idsa
Дата 12.5.2009, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Первое предположение, что в базе могут храниться записи с null-значениями в поле Name. Но Вы пишете
Цитата(Алексеу @  12.5.2009,  12:55 Найти цитируемый пост)
Это не вызывает исключения. Я указал в первом посте что месадж бок комментировал.  

Тогда на какой строчке вылетает исключение?


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Алексеу
Дата 12.5.2009, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 22.5.2008

Репутация: нет
Всего: нет



Эту строчку я выделил. Видимо исключение вызывается в самом  while (reader.Read()) после того как все значения перебраны. Плохо то что невозможно заключить этот цикл в блок try-catch - все равно вылетает исключение. Также источник данных недоступен во время разработки и доступен только во время выполнения. В таких сценариях дебаггер также не работает т.к. идет таймаут соединения.
PM MAIL   Вверх
Idsa
Дата 12.5.2009, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(Алексеу @  12.5.2009,  14:32 Найти цитируемый пост)
Видимо исключение вызывается в самом  while (reader.Read()) после того как все значения перебраны.

В смысле "вроде бы"? Запустите да посмотрите.
Да и даже после перебора всех значений reader не станет равным null.

Цитата(Алексеу @  12.5.2009,  14:32 Найти цитируемый пост)
Плохо то что невозможно заключить этот цикл в блок try-catch - все равно вылетает исключение.

Как так?

Цитата(Алексеу @  12.5.2009,  14:32 Найти цитируемый пост)
Также источник данных недоступен во время разработки и доступен только во время выполнения. В таких сценариях дебаггер также не работает т.к. идет таймаут соединения. 

Значение timeout'а можно увеличить через строку соединения.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
SKrivosein
Дата 12.5.2009, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 9.6.2007
Где: Praha - Прага

Репутация: нет
Всего: 8



Есть локальный SQL сервер? Попробуй на нем симуляцию с дебагрем, попробуй выкинуть (на время) с вопроса ID. С теми данными которые даеш, это
"догадайся мол сама"  smile 


--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0438 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.