Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
2 / 2 / 1
Регистрация: 28.03.2014
Сообщений: 56

Ошибка при попытке получить значение из SQLDataReader

25.03.2017, 08:20. Показов 2626. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
При загрузке формы делаю запрос к базе данных. Выдает ошибку. Ругается на то, что в SQLDataReader нет значений.
C#
1
2
3
4
5
6
7
8
9
10
11
12
private void IndexPage_Shown(object sender, EventArgs e)
        {
            string SqlIndexReq = "SELECT ContractNum, FullNameBuilding, StartDate, DevelopName, DesignName, BuildName FROM ObjectContract WHERE ContractNum=" + "'" + GlobalVars.GlContractNum + "'";
            using (SqlConnection Connection = new SqlConnection(GlobalVars.ConnectionString))
            {
                Connection.Open();
                SqlCommand ComForLabel = new SqlCommand(SqlIndexReq, Connection);
                SqlDataReader DRForLabel = ComForLabel.ExecuteReader();
                DataAboutObject.Text = "Номер контракта: " + DRForLabel.GetString(0) + "Наименование объекта капитального строительства:";
                DRForLabel.Close();
            }
        }


Вот, что пишет:
Необработанное исключение типа "System.InvalidOperationException" в System.Data.dll
Дополнительные сведения: Недопустимая попытка чтения при отсутствии данных.

Когда копирую строку с запросом и делаю запрос в SqlServer MS, запрос выполняется.

Подскажите, если кто знает в чем проблема ?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.03.2017, 08:20
Ответы с готовыми решениями:

Ошибка при попытке получить значение из реестра
Добрый день. Пытаюсь получить значение из реестра в Windows Forms проекте. Но получаю ошибки. Подскажите что не правильно сделал? И...

Access Violation при попытке получить значение Url из TChromium
По совету модератора я попытался присвоить Edit1.text сначение Url из TChromium Edit1.Text := Form1.Chromium1.Browser.MainFrame.url; И...

Ошибка при попытке получить данные с API
Сообщение ошибки: Access to XMLHttpRequest at 'https://api.ipgeolocationapi.com/countries' from origin 'http://localhost:4200' has been...

7
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
25.03.2017, 12:46
https://msdn.microsoft.com/ru-... 10%29.aspx
0
2 / 2 / 1
Регистрация: 28.03.2014
Сообщений: 56
25.03.2017, 15:17  [ТС]
Так я ж так и делаю.
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
25.03.2017, 15:32
Лучший ответ Сообщение было отмечено OwenGlendower как решение

Решение

Цитата Сообщение от gorbunov-anton Посмотреть сообщение
Так я ж так и делаю.
Неужели так сложно прочесть статью?
C#
1
2
3
4
5
6
7
8
if (reader.HasRows)
        {
            while (reader.Read())
            {
                Console.WriteLine("{0}\t{1}", reader.GetInt32(0),
                    reader.GetString(1));
            }
        }
Сначала проверяется, имеются ли строки в reader, потом в цикле осуществляется построчное чтение данных методом Read(). А вы не делаете ни того, ни другого.
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18283 / 14206 / 5368
Регистрация: 17.03.2014
Сообщений: 28,884
Записей в блоге: 1
25.03.2017, 16:37
Цитата Сообщение от Igr_ok Посмотреть сообщение
Сначала проверяется, имеются ли строки в reader, потом в цикле осуществляется построчное чтение данных методом Read().
Проверять наличие строк необязательно. Главное это вызов Read()
1
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
25.03.2017, 18:45
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Проверять наличие строк необязательно
Я в курсе) Это было просто объяснение приведенного мною кода. И т.к. у ТС на основе выборки выдается сообщение, то я предположил, что и для отсутствия данных ему понадобится обработка, что можно сделать в условии else
C#
1
2
3
4
5
6
7
8
if (reader.HasRows)
{
...
}
else
{
...
}
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18283 / 14206 / 5368
Регистрация: 17.03.2014
Сообщений: 28,884
Записей в блоге: 1
25.03.2017, 22:43
Цитата Сообщение от Igr_ok Посмотреть сообщение
Я в курсе)
Ок. Я это больше для ТС писал.
0
2 / 2 / 1
Регистрация: 28.03.2014
Сообщений: 56
25.03.2017, 22:50  [ТС]
Спасибо. Действительно сработало я и не думал, что Read() обязателен при получении значений.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.03.2017, 22:50
Помогаю со студенческими работами здесь

Wininet, ошибка 12157 при попытке получить веб страницу
Доброго времени, посмотрел простенькие реализации получения кода веб странички, нашел подходящую. Когда попробовал все работает со многими...

Ошибка при вызове SqlDataReader
Есть код: static public decimal SumComplectation(SqlConnection connection) { SqlCommand SqlCom = new...

Http сервер и клиент. При попытке получить ответ клиента от сервера ошибка: Поток был недоступен для чтения
Здравствуйте, пытаюсь разобраться с написанием клиент-серверного приложения используя сокеты. Написал в одном консольном проекте сервер: ...

Ошибка "Значение должно быть скалярным" при попытке сравнить два числа в MathCad
Хочу написать программу для поиска минимума и при попытке сравнить два числа вылазит ошибка, связанная со скалярным значением. Но если...

Ошибка при попытке очистить дерево дважды или попытке очистить и заново заполнить
Привет, нужно написать программу с деревьями ( VS, формы) однако возникли проблемы: есть функции - создание, удаление и обходы. Однако...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru