0 / 0 / 0
Регистрация: 18.02.2022
Сообщений: 5
MS SQL

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

18.02.2022, 21:59. Показов 2158. Ответов 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
14321 / 9411 / 1356
Регистрация: 21.01.2016
Сообщений: 35,479
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
14321 / 9411 / 1356
Регистрация: 21.01.2016
Сообщений: 35,479
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
14321 / 9411 / 1356
Регистрация: 21.01.2016
Сообщений: 35,479
20.02.2022, 05:01
kasumiii, и что? Вообще никаких идей почему так происходит? Не пытались погуглить, что сия ошибка означает?
0
0 / 0 / 0
Регистрация: 18.02.2022
Сообщений: 5
20.02.2022, 10:50  [ТС]
Прогуглила но ничего не нашла
0
Эксперт .NET
 Аватар для Usaga
14321 / 9411 / 1356
Регистрация: 21.01.2016
Сообщений: 35,479
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 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru