将datagridView保存到sql数据库中
本文关键字:数据库 sql datagridView 保存 | 更新日期: 2023-09-27 18:26:00
感谢您的帮助,首次将数据网格保存到数据库中
我用这种方式填写数据网格:
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();
}
}
我想在点击按钮后将datagridView1保存到数据库:
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",这样下次单击时就不会再次迭代相同的行。