Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 15.07.2022
Сообщений: 1
.NET 4.x

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

15.07.2022, 16:59. Показов 799. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую! Изучаю потихоньку C# взаимодействуя с БД SQL
Я хотел сделать импорт данных из Excel файла непосредственно в БД, но столкнулся с проблемой.
При нажатии на кнопку "button1" возникает исключение: System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта." System.Windows.Forms.DataGridViewCell.Va lue.get вернул null.

Вот код (Исключение на 107 строчке)

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace med
{
    public partial class Form6 : Form
    {
 
        SqlCommand comm;
        SqlConnection con;
        SqlDataReader dr;
        int idData;
 
        public Form6()
        {
            InitializeComponent();
            con = new SqlConnection(cfg.conStr());
            //Loadrecord();
            
        }
 
        public void Loadrecord()
        {
            dataGridView1.Rows.Clear();
            int i = 0;
            con.Open();
 
            comm = new SqlCommand($"SELECT Ученик.ФИО, Ученик.номерКласса, Ученик.датаРождения, Ученик.Рост, Данные.группаЗдоровья, Данные.физическаяГруппа, Данные.педиатрическийДиагноз,  Данные.хирургическийДиагноз, Данные.неврологическийДиагноз, Данные.Окулист, Данные.ЛОР, Данные.Дантист FROM Ученик INNER JOIN Данные ON Ученик.кодОбщ = Данные.код", con);
            dr = comm.ExecuteReader();
            while (dr.Read())
            {
                i++;
                dataGridView1.Rows.Add(i, dr["ФИО"].ToString(), dr["номерКласса"].ToString(), dr["датаРождения"].ToString(), dr["Рост"].ToString(), dr["группаЗдоровья"].ToString(), dr["физическаяГруппа"].ToString(), dr["педиатрическийДиагноз"].ToString(), dr["хирургическийДиагноз"].ToString(), dr["неврологическийДиагноз"].ToString(), dr["Окулист"].ToString(), dr["ЛОР"].ToString(), dr["Дантист"].ToString());
 
                
            }
            dr.Close();
            con.Close();
 
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
 
            Microsoft.Office.Interop.Excel.Application xlApp;
            Microsoft.Office.Interop.Excel.Workbook xlBk;
            Microsoft.Office.Interop.Excel.Worksheet xlWSh;
            Microsoft.Office.Interop.Excel.Range xlRn;
 
            int xlRow;
            string xlFileName;
 
            openFileDialog1.Filter = "Excel Office |*.xls; *xlsx";
            openFileDialog1.ShowDialog();
            xlFileName = openFileDialog1.FileName;
 
            if (xlFileName != "")
            {
                xlApp = new Microsoft.Office.Interop.Excel.Application();
                xlBk = xlApp.Workbooks.Open(xlFileName);
                xlWSh = xlBk.Worksheets["Data"];
                xlRn = xlWSh.UsedRange;
 
 
                int i = 0;
 
                for (xlRow = 2; xlRow <= xlRn.Rows.Count; xlRow++)
                {
 
                    i++;
                    dataGridView1.Rows.Add(i, xlRn.Cells[xlRow, 1].Text,
                        xlRn.Cells[xlRow, 2].Text,
                        xlRn.Cells[xlRow, 3].Text,
                        xlRn.Cells[xlRow, 4].Text,
                        xlRn.Cells[xlRow, 5].Text,
                        xlRn.Cells[xlRow, 6].Text,
                        xlRn.Cells[xlRow, 7].Text,
                        xlRn.Cells[xlRow, 8].Text,
                        xlRn.Cells[xlRow, 9].Text,
                        xlRn.Cells[xlRow, 10].Text,
                        xlRn.Cells[xlRow, 11].Text,
                        xlRn.Cells[xlRow, 12].Text);
                }
                
                xlBk.Close();
                xlApp.Quit();
            }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < dataGridView1.Rows.Count; i++) 
                
            {
                    con.Open();
 
                    comm = new SqlCommand($"INSERT INTO Данные(группаЗдоровья, физическаяГруппа, педиатрическийДиагноз, хирургическийДиагноз, неврологическийДиагноз, Окулист, ЛОР, Дантист) VALUES (@группаЗдоровья, @физическаяГруппа, @педиатрическийДиагноз, @хирургическийДиагноз, @неврологическийДиагноз, @Окулист, @ЛОР, @Дантист)", con);
                    comm.Parameters.AddWithValue("@группаЗдоровья", dataGridView1.Rows[i].Cells[5].Value.ToString());
                    comm.Parameters.AddWithValue("@физическаяГруппа", dataGridView1.Rows[i].Cells[6].Value.ToString());
                    comm.Parameters.AddWithValue("@педиатрическийДиагноз", dataGridView1.Rows[i].Cells[7].Value.ToString());
                    comm.Parameters.AddWithValue("@хирургическийДиагноз", dataGridView1.Rows[i].Cells[8].Value.ToString());
                    comm.Parameters.AddWithValue("@неврологическийДиагноз", dataGridView1.Rows[i].Cells[9].Value.ToString());
                    comm.Parameters.AddWithValue("@Окулист", dataGridView1.Rows[i].Cells[10].Value.ToString());
                    comm.Parameters.AddWithValue("@ЛОР", dataGridView1.Rows[i].Cells[11].Value.ToString());
                    comm.Parameters.AddWithValue("@Дантист", dataGridView1.Rows[i].Cells[12].Value.ToString());
                    comm.ExecuteNonQuery();
 
                    comm = new SqlCommand("SELECT MAX(код) FROM Данные", con);
                    idData = (int)comm.ExecuteScalar();
 
                    comm = new SqlCommand($"INSERT INTO Ученик(ФИО, номерКласса, датаРождения, Рост, кодОбщ) VALUES (@ФИО, @номерКласса, @датаРождения, @Рост, @кодОбщ)", con);
                    comm.Parameters.AddWithValue("@ФИО", dataGridView1.Rows[i].Cells[1].Value.ToString());
                    comm.Parameters.AddWithValue("@номерКласса", dataGridView1.Rows[i].Cells[2].Value.ToString());
                    comm.Parameters.AddWithValue("@датаРождения", dataGridView1.Rows[i].Cells[3].Value.ToString());
                    comm.Parameters.AddWithValue("@Рост", dataGridView1.Rows[i].Cells[4].Value.ToString());
                    comm.Parameters.AddWithValue("@кодОбщ", idData);
                    comm.ExecuteNonQuery();
 
                    con.Close();
 
            }
                Loadrecord();
                this.Close();
              
        }
 
        private void label1_Click(object sender, EventArgs e)
        {
 
        }
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.07.2022, 16:59
Ответы с готовыми решениями:

System.NullReferenceException Ссылка на объект не указывает на экземпляр объекта
Добрый день! имею такой код: private void button2_Click_1(object sender, EventArgs e) { try { ...

System.NullReferenceException ссылка на объект не указывает на экземпляр объекта
подскажите пожалуйста почему вот здесь https://www.youtube.com/watch?v=9u_1WTd_f_Y нет ни какой ошибки а у меня выползает? вотт код: ...

System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта
После выбора файла Excel в приложении вылазит ошибка System.NullReferenceException:Ссылка на объект не указывает на экземпляр объекта....

1
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
15.07.2022, 17:08
Лучший ответ Сообщение было отмечено shvedkov01 как решение

Решение

shvedkov01, ну он же вам прямо говорит что value у вас null а вы ему вызываете метод ToString
Цитата Сообщение от shvedkov01 Посмотреть сообщение
.Value.ToString()
сделайте .Value?.ToString() и эта ошибка уйдет, но не факт что другие не появятся. Потому что не нужно обращаться к компонентам формы напрямую если для них есть dataset в которыx можно указать списки модели данных через которые проще всего взаимодействовать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.07.2022, 17:08
Помогаю со студенческими работами здесь

System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."
Строго не судите, еще новичок Такая ситуация, есть форма со множеством форм зелёного цвета Делаю проверку по бд какие кнопки должны...

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

System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта"
На что заменить? //Заполняем таблицу переходов Form1 func = null; if (func != null) ...

System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."
Как можно обработать ошибку таким образом, чтобы при её возникновении программа не крашилась, а вылзало сообщение...

System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."
Ошибка происходит из за того что я удаляю все данные из listBox1 (listBox1.Items.Clear();) ,если я уберу эту строчку кода ,ошибки не будет...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru