Как я могу обновить datagridview

#c# #sql-server

Вопрос:

У меня есть две таблицы с внешним ключом, первая из которых:

tblFile : идентификатор файла, имя файла…

А во-вторых, это:

tblChild (в представлении Datagridview) : идентификатор ребенка, имя ребенка, дата рождения, fkFileID.

При нажатии кнопки Сохранить (в форме), как я могу обновить все строки во второй таблице, если добавить, Отредактировать или Удалить строки? (Форма, например: https://i.postimg.cc/jq7Ks3CW/1.jpg)

Я пробовал этот код и другие:

 string ChID; using (SqlCommand cmd = new SqlCommand("SELECT ChildID FROM tblChild WHERE ChildID = @ChildID", con)) {  cmd.Parameters.AddWithValue("@ChildID", dgv.Rows[0].Cells[0].Value ?? DBNull.Value);  SqlDataAdapter sda = new SqlDataAdapter(cmd);  DataTable dt = new DataTable();  sda.Fill(dt);   if (dt.Rows.Count gt; 0)  {  foreach (DataGridViewRow rowCh in dgv.Rows)  {  ChID = dt.Rows[0]["ChildID"].ToString();  if (ChID == rowCh.Cells[0].Value.ToString())  {  using (SqlCommand cmdCh = new SqlCommand("UPDATE tblChild SET ChildName = @ChildName, ChildBirthDate = @ChildBirthDate, fkFileID = (SELECT FileID FROM tblFile WHERE FileID = @FileID) WHERE ChildID = @ChildID", ClsDB.con))  {  cmdCh.Parameters.Clear();  cmdCh.Parameters.AddWithValue("@ChildID", rowCh.Cells[0].Value ?? DBNull.Value);  cmdCh.Parameters.AddWithValue("@ChildName", rowCh.Cells[1].Value ?? DBNull.Value);  cmdCh.Parameters.AddWithValue("@ChildBirthDate", rowCh.Cells[2].Value ?? DBNull.Value);  cmdCh.Parameters.AddWithValue("@FileID", txtID.Text.Trim());  cmdCh.ExecuteNonQuery();  }  }  }  }  else  {  foreach (DataGridViewRow rowCh in dgv.Rows)  {  using (SqlCommand cmdCh = new SqlCommand("INSERT INTO tblChild (ChildName, ChildBirthDate, fkFileID) VALUES (@ChildName, @ChildBirthDate, (SELECT FileID FROM tblFile WHERE FileID = @FileID))", ClsDB.con))  {  cmdCh.Parameters.AddWithValue("@ChildName", rowCh.Cells[1].Value ?? DBNull.Value);  cmdCh.Parameters.AddWithValue("@ChildBirthDate", rowCh.Cells[2].Value ?? DBNull.Value);  cmdCh.Parameters.AddWithValue("@FileID", txtID.Text.Trim());  cmdCh.ExecuteNonQuery();  }  }  } }  

Комментарии:

1. Задача DbDataAdapter состоит в первую очередь в том, чтобы сохранять изменения, а не просто загружать их. Почему ты им не пользуешься?

2. Спасибо за ваш ответ, я чувствую, что то, что я пробовал, неправильно, как я могу это использовать?

3. Это могло бы помочь вам дать более подробную информацию о вашей проблеме. Вы пробовали этот код….и что произошло / что должно произойти?

4. Неужели это так сложно? вопрос ясен.. Как сохранить все изменения в DGV (Добавить, Отредактировать, Удалить) сразу при нажатии кнопки Сохранить ???