Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 18.09.2022
Сообщений: 8

Создание кнопки сохранение для введенных записей в datagridview, и сохранение в базе данных

16.05.2024, 18:09. Показов 981. Ответов 4

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста, сам чайник, нужно создать кнопку сохранения введенных записей, которые вводили в datagridview. То есть изначально на форме есть tabcontrol, в каждом из них (4) находится по одной datagridview, так вот нужно ввести что либо в любую dgv и нажав на кнопку чтобы запись сохранилась и в бд, ну и естественно в dgv, вот 2 кода которыми пользовался, но пишет что якобы table пустой или что то по типу того, и что значение не определено,имя параметра datatable.
1 код:
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
142
143
144
145
146
147
148
149
150
151
152
        private void button1_Click(object sender, EventArgs e)
        {
            // Получить данные из каждой DataGridView
            var dgv1Data = dataGridView1.DataSource as DataTable;
            var dgv2Data = dataGridView2.DataSource as DataTable;
            var dgv3Data = dataGridView3.DataSource as DataTable;
            var dgv4Data = dataGridView4.DataSource as DataTable;
 
            // Строка подключения к базе данных
            string connectionString = "Data Source=localhost\\SQLEXPRESS;Initial Catalog=Diplom;Integrated Security=True";
 
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // Открыть соединение с базой данных
                connection.Open();
 
                // Обновить таблицу Listofproducts
                using (SqlDataAdapter adapter = new SqlDataAdapter())
                {
                    string selectQuery = "SELECT * FROM Listofproducts";
                    adapter.SelectCommand = new SqlCommand(selectQuery, connection);
                    SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
                    adapter.Update(dgv1Data);
                }
 
                // Обновить таблицу Client
                using (SqlDataAdapter adapter = new SqlDataAdapter())
                {
                    string selectQuery = "SELECT * FROM Client";
                    adapter.SelectCommand = new SqlCommand(selectQuery, connection);
                    SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
                    adapter.Update(dgv2Data);
                }
 
                // Обновить таблицу Staff
                using (SqlDataAdapter adapter = new SqlDataAdapter())
                {
                    string selectQuery = "SELECT * FROM Staff";
                    adapter.SelectCommand = new SqlCommand(selectQuery, connection);
                    SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
                    adapter.Update(dgv3Data);
                }
 
                // Обновить таблицу Supplies
                using (SqlDataAdapter adapter = new SqlDataAdapter())
                {
                    string selectQuery = "SELECT * FROM Supplies";
                    adapter.SelectCommand = new SqlCommand(selectQuery, connection);
                    SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
                    adapter.Update(dgv4Data);
                }
            }
 
            // Отобразить сообщение об успешном сохранении
            MessageBox.Show("Данные успешно сохранены в базу данных.");
        }
    }
    
}
 
2 код: 
private void button1_Click(object sender, EventArgs e)
{
    
    // Получить данные из каждой DataGridView
    var dgv1Data = dataGridView1.DataSource as DataTable;
    var dgv2Data = dataGridView2.DataSource as DataTable;
    
 
    // Строка подключения к базе данных
    string connectionString = "Data Source=VLADISLAV\\SQLEXPRESS;Initial Catalog=Diplom;Integrated Security=True";
 
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        // Открыть соединение с базой данных
        connection.Open();
 
        // Получить существующие данные из таблиц
        string selectQuery1 = "SELECT * FROM Listofproducts";
        string selectQuery2 = "SELECT * FROM Client";
        
 
        using (SqlDataAdapter adapter1 = new SqlDataAdapter(selectQuery1, connection))
        {
            DataTable existingData1 = new DataTable();
            adapter1.Fill(existingData1);
            existingData1.Merge(dgv1Data);
            if (dgv1Data == null)
            {
                throw new ArgumentNullException("dgv1Data cannot be null.");
            }
        }
 
        using (SqlDataAdapter adapter2 = new SqlDataAdapter(selectQuery2, connection))
        {
            DataTable existingData2 = new DataTable();
            adapter2.Fill(existingData2);
            existingData2.Merge(dgv1Data);
            if (dgv2Data == null)
            {
                throw new ArgumentNullException("dgv2Data cannot be null.");
            }
        }
        // Обновить таблицы новыми данными
        using (SqlDataAdapter adapter1 = new SqlDataAdapter())
        {
            adapter1.SelectCommand = new SqlCommand(selectQuery1, connection);
            adapter1.UpdateCommand = new SqlCommand("UPDATE Listofproducts SET column1 = @column1 WHERE ID = @ID, column2 = @column2 WHERE id client = @id client, column3 = @column3 WHERE id supplies = @id supplies, column4 = @column4 WHERE model = @model, column5 = @column5 WHERE price = @price, column6 = @column6 WHERE quantity = @quantity, column7 = @column7 WHERE description-characteristics = @description-characteristics, column7 = @column7 WHERE data = @data, column8 = @column8 WHERE photo = @photo", connection) ;
            adapter1.UpdateCommand.Parameters.Add("@column1", SqlDbType.Int, 255, "column1");
            adapter1.UpdateCommand.Parameters.Add("@column2", SqlDbType.Int, 255, "column2");
            adapter1.UpdateCommand.Parameters.Add("@column3", SqlDbType.Int, 255, "column3");
            adapter1.UpdateCommand.Parameters.Add("@column4", SqlDbType.VarChar, 50, "column4");
            adapter1.UpdateCommand.Parameters.Add("@column5", SqlDbType.VarChar, 50, "column5");
            adapter1.UpdateCommand.Parameters.Add("@column6", SqlDbType.VarChar, 50, "column6");
            adapter1.UpdateCommand.Parameters.Add("@column7", SqlDbType.VarChar, 255, "column7");
            adapter1.UpdateCommand.Parameters.Add("@column8", SqlDbType.Date, 255, "column8");
            adapter1.UpdateCommand.Parameters.Add("@column9", SqlDbType.VarChar, 255, "column9");
            adapter1.UpdateCommand.Parameters.Add("@id", SqlDbType.Int, 0, "id");
            adapter1.UpdateCommand.Parameters.Add("@id client", SqlDbType.Int, 0, "id client");
            adapter1.UpdateCommand.Parameters.Add("@id supplies", SqlDbType.Int, 0, "id supplies");
            adapter1.UpdateCommand.Parameters.Add("@model", SqlDbType.Int, 0, "model");
            adapter1.UpdateCommand.Parameters.Add("@price", SqlDbType.Int, 0, "price");
            adapter1.UpdateCommand.Parameters.Add("@quantity", SqlDbType.Int, 0, "quantity");
            adapter1.UpdateCommand.Parameters.Add("@description-characteristics", SqlDbType.Int, 0, "description-chatacteristics");
            adapter1.UpdateCommand.Parameters.Add("@data", SqlDbType.Int, 0, "data");
            adapter1.UpdateCommand.Parameters.Add("@photo", SqlDbType.Int, 0, "photo");
            DataTable existingData1 = new DataTable();
            adapter1.Update(existingData1);
        }
 
        using (SqlDataAdapter adapter2 = new SqlDataAdapter())
        {
            adapter2.SelectCommand = new SqlCommand(selectQuery2, connection);
            adapter2.UpdateCommand = new SqlCommand("UPDATE Client c SET column1 = @column1 WHERE id = @id, column2 = @column2 WHERE full name = @full name, column3 = @column3 WHERE telephone number = @telephone number, column4 = @column4 WHERE mail = @mail, column5 = @column5 WHERE addres = @addres", connection);
            adapter2.UpdateCommand.Parameters.Add("@column1", SqlDbType.Int, 255, "column1");
            adapter2.UpdateCommand.Parameters.Add("@column2", SqlDbType.VarChar, 255, "column2");
            adapter2.UpdateCommand.Parameters.Add("@column3", SqlDbType.VarChar, 50, "column3"); 
            adapter2.UpdateCommand.Parameters.Add("@column4", SqlDbType.VarChar, 50, "column4");
            adapter2.UpdateCommand.Parameters.Add("@column5", SqlDbType.VarChar, 255, "column5");
            adapter2.UpdateCommand.Parameters.Add("@id", SqlDbType.Int, 0, "id");
            adapter2.UpdateCommand.Parameters.Add("@full name", SqlDbType.Int, 0, "full name");
            adapter2.UpdateCommand.Parameters.Add("@telephone number", SqlDbType.Int, 0, "telephone number");
            adapter2.UpdateCommand.Parameters.Add("@mail", SqlDbType.Int, 0, "mail");
            adapter2.UpdateCommand.Parameters.Add("@addres", SqlDbType.Int, 0, "addres");
            DataTable existingData2 = new DataTable();
            adapter2.Update(existingData2);
        }
    }
 
    // Отобразить сообщение об успешном сохранении
    MessageBox.Show("Данные успешно сохранены в базу данных.");
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.05.2024, 18:09
Ответы с готовыми решениями:

DataGridView и сохранение введенных данных
oleDbConnection1.Open(); oleDbDataAdapter1.InsertCommand.Parameters.Value = textBox3.Text; ...

Сохранение введённых данных в DataGridView, с использованием TXT-БД
Прошу помощи в написании кода. Создаю программку к отчёту по практике. Должны осуществляться следующие задачи: - запуск приложения; ...

Сохранение изменений из datagridview в базе данных
Привязываю datagridview к таблице в бд вызывая метод Load(); (использую sqlite). Но никак не могу найти и понять по найденной информации-...

4
 Аватар для Andrey-MSK
3349 / 2235 / 388
Регистрация: 14.08.2018
Сообщений: 7,557
Записей в блоге: 4
17.05.2024, 08:28
Цитата Сообщение от LogiNRus Посмотреть сообщение
T-SQL
1
UPDATE Client c SET column1 = @column1 WHERE id = @id, column2 = @column2 WHERE full name = @full name, column3 = @column3 WHERE telephone number = @telephone number, column4 = @column4 WHERE mail = @mail, column5 = @column5 WHERE addres = @addres
Это что???

Добавлено через 58 секунд
LogiNRus, UPDATE (Transact-SQL)
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,747
Записей в блоге: 1
21.05.2024, 12:31
C#
1
2
3
4
5
6
7
8
// Обновить таблицу Listofproducts
using (SqlDataAdapter adapter = new SqlDataAdapter())
{
    string selectQuery = "SELECT * FROM Listofproducts";
    adapter.SelectCommand = new SqlCommand(selectQuery, connection);
    SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
    adapter.Update(dgv1Data);
}
select-запрос не выполняется, следовательно схема данных не формируется. При такой ситуации SqlCommandBuilder бесполезен.
0
0 / 0 / 0
Регистрация: 18.09.2022
Сообщений: 8
11.06.2024, 22:51  [ТС]
Мой код)

Добавлено через 26 секунд
А как сделать чтобы выполнялся?
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,747
Записей в блоге: 1
11.06.2024, 23:16
Сохранить ссылки на адаптеры на уровне формы при первичной загрузке данных, а затем использовать их вместо создания новых адаптеров.
или
Перед Update вызывать команду с запросом Select, чтобы адаптер подгрузил схему БД.
или
Вызывать методы построителя явно (GetInsertCommand, GetUpdateCommand и GetDeleteCommand).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.06.2024, 23:16
Помогаю со студенческими работами здесь

DataGridView: сохранение в базе данных Access
Здравствуйте. Есть БД с 2мя таблицами на Access. Подключил к DataGridView. Как теперь через DGV записывать в БД? Спасибо!

Сохранение изменений введенных из DataGridView в БД SQL
Здравствуйте. Прошу помощи в реализации одного приема. Каким образом можно сделать сохранение изменений, которые я ввожу в datagridview? ...

Сохранение информации в базе данных с сайта для каждого пользователя
Здравствуйте, на учебе был дан проект, суть в создании планировщика задач( да, как веб-приложение) и вот я начав читать литературу и...

Удаление из dataGridView и сохранение изменений в базе
private void btnDelete_Click(object sender, EventArgs e) { this.Validate();//Валидация данных ...

Не работает сохранение записей из DataGridView в базу
Подскажите пожалуйста, в чем дело, не работает сохранение записей из datagridView в базу. using System; using...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru