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

Недопустимая попытка чтения при отсутствии данных

24.05.2019, 19:07. Показов 6017. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу понять почему выбивает эту ошибку:"недопустимая попытка чтения при отсутствии данных"
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
26
27
28
29
30
31
32
int ID_contact = -1;
 
                SqlConnection connection = new SqlConnection(connectionString);
                string number = telbox.Text;
                string SendCont = "INSERT INTO contact(Name, Email, Phone_Number) VALUES ('"+namebox.Text+"','"+emailbox.Text+"', ' "+number+ "');";
                               
                string contact = "SELECT ID_contact from contact WHERE Name = '" + namebox.Text + "' and Phone_number = '" + telbox.Text + "' and Email = '" + emailbox.Text + "';";
 
                SqlCommand cmd = new SqlCommand(contact, connection);
                connection.Open();
                MessageBox.Show(contact, "Info");
 
                SqlDataReader dataReader = cmd.ExecuteReader();
 
                try
                {
                    dataReader.Read();
                    ID_contact = Convert.ToInt32(dataReader["ID_contact"]);
                    if (ID_contact<0)
                    {
                        SqlCommand cmd1 = new SqlCommand(SendCont, connection);
                        cmd1.ExecuteNonQuery();
                        dataReader.Read();
                        ID_contact = Convert.ToInt32(dataReader["ID_contact"]);
 
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                connection.Close();
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.05.2019, 19:07
Ответы с готовыми решениями:

Попытка чтения или записи в защищенную память
Вот юзаю код из DLL И пишет такую ошибку public string Get(string site, CookieCollection cooks = null, bool Redirect =...

Ошибка "База данных уже существует". При отсутствии базы данных
День добрый! Помогите, пожалуйста, разобраться с проблемой. Есть довольно простой код, который создает БД с именем DB.mdf в корне...

Ошибка "Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "richTextBox1" не из того потока, в котором он был создан."
Код клиента: public partial class Form1 : Form { string IP; string Port; Socket socket; ...

6
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
25.05.2019, 08:47
XIRURG_, DataReader, как должно быть очевидно из названия, предназначен для чтения данных (SELECT), а не для выполнения INSERT.
0
0 / 0 / 0
Регистрация: 24.12.2017
Сообщений: 80
25.05.2019, 10:54  [ТС]
так оно и читает селекта на этом моменте

C#
1
2
3
4
5
6
7
 string contact = "SELECT ID_contact from contact WHERE Name = '" + namebox.Text + "' and Phone_number = '" + telbox.Text + "' and Email = '" + emailbox.Text + "';";
 
                SqlCommand cmd = new SqlCommand(contact, connection);
                connection.Open();
                MessageBox.Show(contact, "Info");
 
                SqlDataReader dataReader = cmd.ExecuteReader();
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
25.05.2019, 11:02
XIRURG_, сори, запутался в вашем коде.
https://docs.microsoft.com/en-... datareader
Делайте проверку на наличие записей в ридере, как показано в примере.
C#
1
 if (reader.HasRows)
0
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,098
25.05.2019, 14:12
C#
1
2
if(dataReader.Read())
   ID_contact = Convert.ToInt32(dataReader["ID_contact"]);
0
0 / 0 / 0
Регистрация: 24.12.2017
Сообщений: 80
25.05.2019, 16:53  [ТС]
сделал по вашему примеру, но все равно он не читает из таблицы
0
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,098
25.05.2019, 19:30
Лучший ответ Сообщение было отмечено XIRURG_ как решение

Решение

Цитата Сообщение от XIRURG_ Посмотреть сообщение
но все равно он не читает из таблицы
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
26
27
28
29
30
int ID_contact = -1;
 
SqlConnection connection = new SqlConnection(connectionString);
string number = telbox.Text;
string SendCont = "INSERT INTO contact(Name, Email, Phone_Number) VALUES ('"+namebox.Text+"','"+emailbox.Text+"', ' "+number+ "'); select scope_identity()";
               
string contact = "SELECT ID_contact from contact WHERE Name = '" + namebox.Text + "' and Phone_number = '" + telbox.Text + "' and Email = '" + emailbox.Text + "';";
 
SqlCommand cmd = new SqlCommand(contact, connection);
connection.Open();
MessageBox.Show(contact, "Info");
 
SqlDataReader dataReader = cmd.ExecuteReader();
 
try
{
    if(dataReader.Read())
        ID_contact = Convert.ToInt32(dataReader["ID_contact"]);
    if (ID_contact<0)
    {
        SqlCommand cmd1 = new SqlCommand(SendCont, connection);
        object new_id=cmd1.ExecuteScalar();
        ID_contact = Convert.ToInt32(new_id);
     }
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}
connection.Close();
обратите венимание на изменение в SendCont и способе исполнения cmd1

Добавлено через 1 минуту
а еще почитайте о параметрах в запросах SqlCommand
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.05.2019, 19:30
Помогаю со студенческими работами здесь

Как сделать, чтобы при отсутствии данных в поле выводился текст "данные отсутствуют"
Есть две таблицы. Нужно вывести данные (не все) из обеих в DetailsView. Запрос сделал, он работает, но если проверок выбранного счётчика не...

Ошибка при попытке чтения данных с другой таблицы в БД
Подключаюсь к базе данных при загрузке формы таким образом: OleDbConnection connect = new...

TryCatch Не перехватывают ошибку "Попытка чтения или записи в защищенную память"
В общем такая беда, после того как переделал проект под платформу .net4.0 конструкция try catch перестала перехватывать выше указанную...

Работа с шаблоном Microsoft Word документа ("Попытка чтения или записи в защищенную память")
Доброго времени суток. Пишу АИС, необходимо сделать функцию которая по шаблону формирует .doc файл. Создал шаблон, через...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
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