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

System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."

18.02.2022, 21:59. Показов 2145. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу приложение на C# с бд sql server для курсовой работы в колледж
При заполнении данных в текст бокс нажимаю на кнопку выходит такая ошибка на строку con.Open();

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
33
34
35
36
37
38
39
40
41
42
43
44
45
using System.Data.SqlClient;
 
namespace WindowsFormsApp2
{
    public partial class Заявитель : Form
    {
        public Заявитель()
        {
            InitializeComponent();
        }
 
        private void Заявитель_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "кадровыеЗапросыDataSet.Заявитель". При необходимости она может быть перемещена или удалена.
            this.заявительTableAdapter.Fill(this.кадровыеЗапросыDataSet.Заявитель);
 
        }
 
        SqlConnection con;
        SqlDataAdapter da;
        SqlCommand cmd;
        DataSet ds;
 
        void GetList()
        {
            con = new SqlConnection(@"Data Source=DESKTOP-C2L4PAS;Initial Catalog=КадровыеЗапросы;Integrated Security=True");
            da = new SqlDataAdapter("Select * From Заявитель", con);
            ds = new DataSet();
            con.Open(); // на эту строку указывается ошибка
            da.Fill(ds, "Заявитель");
            dataGridView1.DataSource = ds.Tables["Заявитель"];
            con.Close();
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            cmd = new SqlCommand();
            con.Open();
            cmd.Connection = con;
            cmd.CommandText = "Insert into Заявитель(Код, ФИО, ДатаРождения, СерияНомерПаспорта, МестоПрописки, НомерТелефона ) values (" + textBox1.Text + ",'" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "')";
            cmd.ExecuteNonQuery();
            con.Close();
            GetList();
        }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.02.2022, 21:59
Ответы с готовыми решениями:

System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта"
Делаю изменение в отдельной форме.Использую класс public static class DataFromBase { public static int Number {...

System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."
Надо сделать экспорт в Ексель, если datagridview 2 столбца, то все нормально, если 3 то возникает ошибка. Мне вообще надо вывести 7...

System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."
Возникает ошибка при нажатии кнопки сохранить. А именно в private void Update System.NullReferenceException: "Ссылка на объект не...

13
Эксперт .NET
 Аватар для Usaga
14314 / 9400 / 1355
Регистрация: 21.01.2016
Сообщений: 35,450
19.02.2022, 04:50
Цитата Сообщение от kasumiii Посмотреть сообщение
con.Open(); // на эту строку указывается ошибка
В этой строке не может быть System.NullReferenceException так как тремя строками выше идёт con = new SqlConnection(.

Так что определитесь на какой строке и какое исключение выбрасывается. Так же, принято текст исключения читать. В нём многое о ошибке говорится.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
19.02.2022, 13:50
Цитата Сообщение от Usaga Посмотреть сообщение
В этой строке не может быть
Может. Если в словах con и con буквы на разных раскладках
0
Эксперт .NET
 Аватар для Usaga
14314 / 9400 / 1355
Регистрация: 21.01.2016
Сообщений: 35,450
19.02.2022, 17:50
MsGuns, тогда будет сообщение от компилятора о несуществующем имени переменной.
0
1168 / 886 / 517
Регистрация: 09.04.2014
Сообщений: 2,102
19.02.2022, 18:44
скорее всего на 39 строке NullReferenceException, что и не удивительно
0
0 / 0 / 0
Регистрация: 18.02.2022
Сообщений: 5
20.02.2022, 00:41  [ТС]
Прошу прощения ошиблась не на 29 строку указывает ошибка, а на 39
0
Эксперт .NET
 Аватар для Usaga
14314 / 9400 / 1355
Регистрация: 21.01.2016
Сообщений: 35,450
20.02.2022, 05:01
kasumiii, и что? Вообще никаких идей почему так происходит? Не пытались погуглить, что сия ошибка означает?
0
0 / 0 / 0
Регистрация: 18.02.2022
Сообщений: 5
20.02.2022, 10:50  [ТС]
Прогуглила но ничего не нашла
0
Эксперт .NET
 Аватар для Usaga
14314 / 9400 / 1355
Регистрация: 21.01.2016
Сообщений: 35,450
20.02.2022, 11:02
kasumiii, правда? Такая уникальная ошибка, что по ней вообще ничего нет в сети?)
0
1168 / 886 / 517
Регистрация: 09.04.2014
Сообщений: 2,102
20.02.2022, 14:21
Цитата Сообщение от kasumiii Посмотреть сообщение
Прогуглила но ничего не нашла
подсказка: посмотрите когда используется con, а когда он создается
0
0 / 0 / 0
Регистрация: 18.02.2022
Сообщений: 5
20.02.2022, 14:59  [ТС]
Не спорю, что это довольно популярная ошибка, да простите. Но я действительно не понимаю, как я должна это исправить
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
20.02.2022, 15:17
kasumiii, ошибка возникает из-за того, что вы обращаетесь к переменной, которая не была инициализирована. Без знания, как правильно это делать, нет смысла вообще что-то писать.
Объявление переменной 19 строка
Цитата Сообщение от kasumiii Посмотреть сообщение
SqlConnection con;
Инициализация переменной 26 строка
Цитата Сообщение от kasumiii Посмотреть сообщение
con = new SqlConnection(@"Data Source=DESKTOP-C2L4PAS;Initial Catalog=КадровыеЗапросы;Integrated Security=True");
Обращение к переменной 39 строка
Цитата Сообщение от kasumiii Посмотреть сообщение
con.Open();
При запуске программы выполняется 19 строка. При нажатии кнопки выполняется 39 строка. Подумайте, что нужно сделать, чтобы 26 строка выполнялась раньше 39-й.
0
0 / 0 / 0
Регистрация: 18.02.2022
Сообщений: 5
20.02.2022, 15:43  [ТС]
Ладно, я тупая и ничего не поняла
Спасибо за потраченное время
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
20.02.2022, 17:00
Цитата Сообщение от kasumiii Посмотреть сообщение
ничего не поняла
В самом начале кода Вашей программы Вы объявляете переменные, которые будут видны во всех методах класса программы:
Цитата Сообщение от kasumiii Посмотреть сообщение
SqlConnection con;
        SqlDataAdapter da;
        SqlCommand cmd;
        DataSet ds;
Но они просто объявляются, без всякой инициализации, т.е. им не ставится в соответствие объект. Следовательно, изначально все они = null.
В методе GetList всем им, в т.ч. con присваиваются ссылки на объекты соответствующих типов (классов). В результате код рабочий. Более, того, после выполнения этого метода во всех переменных остаются ссылки на реальные объекты и теперь можно использовать эти переменные в любых других методах класса "Заявитель", т.е. программы. При этом можно менять их свойства либо вообще заменять на другие объекты, созданные в алгоритме контекста, что чаще всего и делается - например, текст запроса может быть иной, адаптер также нужен другой, если у Вас используется, например, несколько разных гридов.
Ошибка в 39-строке возникла оттого, что на момент обработки события нажатия на кнопку button1 метод GetList не был выполнен ни разу и переменные (в частности, con) остались не инициализированы.

В целом Ваш код имеет несколько существенных "огрехов".

- Не стоит объявлять глобальные переменные если в этом нет никакой потребности - в Вашем случае ее нет абсолютно.

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

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

И последнее. Не нужно обижаться на то, как Вам отвечают люди, которые на порядки грамотнее Вас в теме. Вы только начинаете учиться, поэтому должны быть терпеливы и внимательны.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.02.2022, 17:00
Помогаю со студенческими работами здесь

System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."
Здравствуйте! В работе программы наблюдается ошибка: System.NullReferenceException: "Ссылка на объект не указывает на экземпляр...

System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."
Делал программу по ролику, там все работает, хотя все так же сделал. https://www.youtube.com/watch?v=GysB6QEc04Y private void...

Исключение не обработано.- System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."
Кто знает из-за чего возникает такая проблема? + Скриншот субд таблицы и исключение /// <summary> /// Загрузка...

System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта." comboBox1 было null
Помогите пожалуйста кто знает в чем проблема? System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта." ...

NullReferenceException не обработано(Ссылка на объект не указывает на экземпляр объекта)
Приложение должно сохранять значения ячеек DataGridView2 в, заранее созданный, points.xml Но 2010 Визуал выдает...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru