将datagridView保存到sql数据库中

首次将datagrid保存到数据库感谢任何帮助。
我用这种方式填充dataGrid:

private void FillGrid1() { frmEditovat frm2 = new frmEditovat(this); DataTable DT = null; DataRow newRow; int pTypNastaveniaID = 0; string pNazov = "", pHodnota = ""; DataConnector_My dataConnector = new DataConnector_My(mDataRoot.ConnectCentrum.ConnectionString); try { dataConnector.Init(mDataRoot.ConnectCentrum); DT = dataConnector.Get_Nastavenia(); /* Odstranim zdroj pre Grid. Musi byt koli triedeniu gridu. */ dataGridView1.DataSource = null; /* Smazanie Tabulky. */ mDTable1.Clear(); for (int row = 0; row < DT.Rows.Count; row++) { pTypNastaveniaID = 0; pNazov = ""; pHodnota = ""; if (DT.Rows[row]["TypNastaveniaID"] != DBNull.Value) pTypNastaveniaID = Convert.ToInt32(DT.Rows[row]["TypNastaveniaID"]); if (DT.Rows[row]["Nazov"] != DBNull.Value) pNazov = DT.Rows[row]["Nazov"].ToString(); if (DT.Rows[row]["Hodnota"] != DBNull.Value) pHodnota = DT.Rows[row]["Hodnota"].ToString(); newRow = mDTable1.NewRow(); newRow["TypNastaveniaID"] = pTypNastaveniaID; newRow["Nazov"] = pNazov; newRow["Hodnota"] = pHodnota; mDTable1.Rows.Add(newRow); } /* Datovy zdroj zpet. */ dataGridView1.DataSource = mDTable1; Application.DoEvents(); } catch (SqlException e) { MessageBox.Show(this.GetType() + ".FillGrid: " + Environment.NewLine + e.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { DT.Dispose(); } } 

我想在按钮中单击操作后将datagriView1保存到数据库:

  private void btnSave_Click_1(object sender, EventArgs e) 

或者类似代码的一些示例将是欣赏的。

既然你没有指定你是否正在使用任何TableAdapters,我猜你刚刚使用了Datatable ……

最简单的方法是首先查找更改然后迭代它们。 根据它们的性质(NEW,UPDATE,DELETED)对数据库执行您自己的查询。

 var dataTable = ((DataTable)dataGridView1.DataSource).GetChanges(); if(dataTable != null && dataTable.Rows.Count > 0) { foreach (DataRow row in dataTable.Rows) { switch (row.RowState) { case DataRowState.Added: // DO INSERT QUERY break; case DataRowState.Deleted: // DO DELETE QUERY break; case DataRowState.Modified: SqlCommand command = new SqlCommand("UPDATE YOURTABLE SET TypNastaveniaID = @typ, Nazov = @title, Hodnota = @amount"); command.Parameters.Add(new SqlParameter("@typ", row["TypNastaveniaID"])); command.Parameters.Add(new SqlParameter("@title", row["Nazov"])); command.Parameters.Add(new SqlParameter("@amount", row["Hodnota"])); command.ExecuteNonQuery(); break; } } ((DataTable)dataGridView1.DataSource).AcceptChanges(); } 

希望你能得到这个想法。 请注意AcceptChanges,需要在根表上调用。 它会将更改设置为“DONE”,因此下次单击时您将不会再次迭代相同的行。