Marc-IT Ответов: 1

Сохранение данных из datagrid в SQL все сразу


Привет У меня есть приложение winform на c# , которое позволяет редактировать таблицы из моей базы данных sql. Мне удалось открыть таблицы и отредактировать их, но когда я сохраняю данные, все строки реплицируются. Есть ли способ сделать это, но только отредактировать необходимые поля или вставить, если будет добавлено новое? Я попробовал команду обновления, но она не работает. код, который я использую, таков:

Что я уже пробовал:

using (SqlConnection con = new SqlConnection(cs))
 {
     con.Open();
     foreach (DataGridViewRow row in dataGridView1.Rows)
     {

         if (!row.IsNewRow)
         {
             using (SqlCommand cmd = new SqlCommand("INSERT INTO temp (data1, data2, data3, data4) VALUES(@c1,@c2,@c3,@c4)", con))
             {

                 cmd.Parameters.AddWithValue("@C1", row.Cells[0].Value);
                 cmd.Parameters.AddWithValue("@C2", row.Cells[1].Value);
                 cmd.Parameters.AddWithValue("@C3", row.Cells[2].Value);
                 cmd.Parameters.AddWithValue("@C4", row.Cells[3].Value);

                 cmd.ExecuteNonQuery();

             }
         }
     }
 }

Tomas Takac

Каждая строка должна иметь уникальный идентификатор. Вам нужно знать, какая строка является новой, а какая была обновлена. Допустим, все новые строки будут иметь id=0, а отредактированные строки будут иметь id>0. Исходя из этого, вы либо выдаете команду INSERT, либо UPDATE.

Marc-IT

Привет Томас,
Спасибо за ответ, это имеет смысл.
Я добавил первичный ключ в качестве идентификатора с помощью автоинкремента.
У вас есть пример кода, как я могу проверить наличие идентификатора ?

1 Ответов

Рейтинг:
7

Er. Puneet Goel

Решение Шаг 1: Подготовьте все ваши данные и создайте DataTable для сохранения данных.
Шаг 2: передайте Datatable в Sql для сохранения данных.

c# - Как вставить таблицу данных в таблицу базы данных SQL Server? - переполнение стека[^]