Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 160

System.InvalidOperationException: "Недопустимая попытка чтения при отсутствии данных."

01.09.2021, 16:01. Показов 7583. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имею вот такой код добычи данных из запроса:
C#
1
2
3
4
5
6
SqlCommand command1 = new SqlCommand("SELECT name1, name2, mame3 FROM Test WHERE id = '" + i + "'", Con1); 
                Con1.Open();
                SqlDataReader reader = command1.ExecuteReader();
                macro[i] = reader.GetString(0);
                nazv[i] = reader.GetString(1);
                nomer[i] = reader.GetString(2);
при выполнении кода возникает ошибка в строке
C#
1
macro[i] = reader.GetString(0);
, ошибка в заголовке, в чем дело не пойму, запрос рабочий, данные в reader должны быть.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.09.2021, 16:01
Ответы с готовыми решениями:

System.InvalidOperationException: "Недопустимая попытка чтения при отсутствии данных." Как исправить?
/*Вызвано исключение в 44 строчке. Вроде всё правильно написано и все типы данных правильно указано*/ using System; using...

Недопустимая попытка чтения при отсутствии данных
Не могу понять почему выбивает эту ошибку:"недопустимая попытка чтения при отсутствии данных" int ID_contact = -1; ...

Исключение System.InvalidOperationException: "Недопустимая операция в нескольких потоках: попытка доступа к элементу упр
При запуске возникает исключение System.InvalidOperationException: "Недопустимая операция в нескольких потоках: попытка доступа к элементу...

31
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 160
01.09.2021, 16:52  [ТС]
Студворк — интернет-сервис помощи студентам
кстати и нагрузка не такая большая будет, там 3-4 обращения в цикле будет, не страшно, я думаю...

Добавлено через 55 секунд
Спасибо, понимаю что борзею, но вот пояснение бы еще ко всему этому....
0
 Аватар для Andrey-MSK
3368 / 2254 / 388
Регистрация: 14.08.2018
Сообщений: 7,631
Записей в блоге: 4
01.09.2021, 16:54
aksident, Руководство по ADO.NET
0
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 160
01.09.2021, 16:56  [ТС]
Ну и как видно из моего кода мне нужен именно строковый массив для моей задачи, т.к. в дальнейшем мне нужны будут значения именно как macro[1], nazv[1], nomer[1], далее macro[2], nazv[2], nomer[2] и т.д.

Добавлено через 47 секунд
Спасибо, почитаю
0
 Аватар для Andrey-MSK
3368 / 2254 / 388
Регистрация: 14.08.2018
Сообщений: 7,631
Записей в блоге: 4
01.09.2021, 17:02
Цитата Сообщение от aksident Посмотреть сообщение
Спасибо, почитаю
Там кратко, а вот тут полная документация от разработчиков - ADO.NET
1
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
01.09.2021, 17:32
aksident, читайте теорию, а не придумывайте собственный синтаксис работы с SqlDataReader
https://docs.microsoft.com/en-... at-ext-5.0
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
01.09.2021, 18:02
Лучший ответ Сообщение было отмечено aksident как решение

Решение

Цитата Сообщение от aksident Посмотреть сообщение
Ну и как видно из моего кода мне нужен именно строковый массив для моей задачи, т.к. в дальнейшем мне нужны будут значения именно как macro[1], nazv[1], nomer[1], далее macro[2], nazv[2], nomer[2] и т.д.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class MyData
{  
     int id { get; set; }
     string macro { get; set; }
     string nazv { get; set; }
     string nomer { get; set; }
}
 
List<MyData> listdata = new List<MyData>();
using (SqlConnection con = new SQLConnection(<Строка подключения>))
{
    SqlCommand comm = new SqlCommand("SELECT id, name1, name2, mame3 FROM Test", con); 
    con.Open();
    SqlDataReader reader = command1.ExecuteReader();
    while (reader.Read())
    {
         listdata.Add(new MyData {
              id = reader.GetInt(0),             
              macro = reader.GetString(1),             
              nazv = reader.GetString(2),             
              nomer = reader.GetString(3),             
         });
    }
    reader.Close();
}
Теперь по индексатору можно вытянуть их списка listdata любой объект, а из него - значение скалярной переменной.
1
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 160
01.09.2021, 18:06  [ТС]
Спасибо всем огромное за помощь и уделенное время! Очень всем признателен, теперь стал чуть лучше разбираться в данном вопросе и вижу свои ошибки, буду попробовать, MsGuns ваш код то самое что мне и требовалось сделать, спасибо.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
01.09.2021, 18:08
Для примера загрузка содержимого трех колонок в комбобоксы
C#
1
2
3
4
5
6
7
8
9
comboBoxMacro.Items.Clear();
comboBoxNazv.Items.Clear();
comboBoxNomer.Items.Clear();
foreach (MyData d in listdata)
{
    comboBoxMacro.Items.Add(d.macro);
    comboBoxNazv.Items.Add(d.nazv);
    comboBoxNomer.Items.Add(d.nomer);
}
0
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 160
01.09.2021, 18:16  [ТС]
мне просто нужны значения в переменных, из них будет заполняться шаблон word, но пригодится, спасибо
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
01.09.2021, 23:20
aksident, вам и до этого скидывали рабочие примеры, только тогда это почему то было бессмысленным нагромождением кода...интересно получается! Но да ладно
1
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
03.09.2021, 18:57
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
LaborErect = dataReader["TrMont"] == DBNull.Value ? null : (double?)dataReader["TrMont"],
Стесняюсь спросить: а зачем это масло масляное ?
0
HF
 Аватар для HF
1321 / 901 / 200
Регистрация: 09.09.2011
Сообщений: 2,711
Записей в блоге: 2
04.09.2021, 20:43
Цитата Сообщение от MsGuns Посмотреть сообщение
Стесняюсь спросить: а зачем это масло масляное ?
А как вы иначе бы написали? DBNull это не null.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.09.2021, 20:43
Помогаю со студенческими работами здесь

Недопустимая попытка вызвать Read при закрытом устройстве чтения
День добрый. Подскажите п. Как проверить есть ли совпадение. М т.е. в условие нужно занести лож или истена в зависимости от того...

System.AccessViolationException: Попытка чтения или записи в защищенную память - попытка 2
В предыдущей теме некто вообразил, что код зацикливается, поэтому приходится выкладывать более широкую модель. Надеюсь, до целого проекта...

System.AccessViolationException: Попытка чтения или записи в защищенную память - попытка 3
Уже простите за некомпилируемый код, просто я переустановил Windows, и Visual Studio удалилась, только сегодня днем установил. Код там...

При запуске выдает ошибку System.InvalidOperationException: "The specified cast from a materialized 'System.Decimal'
ошибка выдается на этом моменте ObservableCollection &lt; Plane &gt; planes = new ObservableCollection&lt;Plane&gt;(result_planes); вот как...

System.AccessViolationException: Попытка чтения или записи в защищенную память
using System; using System.Collections.Generic; using System.Data.Odbc; using System.Data; using System.Linq; using System.Text; ...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru