DataGridView的更改未反映在数据库中

时间:2017-07-06 20:32:59

标签: c# .net winforms datagridview dataadapter

我有一个DataGridView控件和一个保存按钮。单击“保存”按钮时,我希望对DataGridView所做的任何更改都通过DataAdapter Update()命令反映在我的数据库中。但是,在点击保存按钮并重新加载表单后,更新不存在。

以下是“保存”按钮的所有代码:

private void btnSave_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection("Data Source=addtool.database.windows.net;Initial Catalog=AddToolToInventoryDB;User id=kanerbw; Password=Rabaraba!11;");
        DataTable dt = new DataTable();
        SqlDataAdapter adapter = new SqlDataAdapter("select * from ToolTB", con);
        SqlCommandBuilder myBuilder = new SqlCommandBuilder(adapter);

        con.Open();
        SqlCommandBuilder scb = new SqlCommandBuilder(adapter);
        myBuilder.GetUpdateCommand();
        adapter.UpdateCommand = myBuilder.GetUpdateCommand();
        adapter.Update(dt);
        con.Close();
    }
编辑:我忘了将DGV的数据源设置为数据表。这是工作代码:

private void btnSave_Click(object sender, EventArgs e)
    {
        using (var con = new SqlConnection(connectionString))
        {
            SqlDataAdapter adapter = new SqlDataAdapter("select * from ToolTB", con);
            SqlCommandBuilder myBuilder = new SqlCommandBuilder(adapter);

            dgvProductInfo.DataSource = dt;

            adapter.UpdateCommand = myBuilder.GetUpdateCommand();
            adapter.Update(dt);

            dt.Clear();
            adapter.Fill(dt);
        }
    }

1 个答案:

答案 0 :(得分:0)

您的代码有几个问题:

  1. 您没有在using语句中包含SQLConnection。您应该始终使用此模式,以便正确处理连接:using(var connection = new SqlConnection(...)){ rest of statements here }

  2. btnSave_Click函数上,您将从数据库中再次获取数据 - 请参阅select * from tbl...代码 - 然后再次填充DataTable;因此,很明显不会有任何变化反映出来。您需要做的是从页面读取更新的DataTable并在btnSave_Click函数内使用它来将更新推送到数据库。

  3. 您的问题是DataGridView我认为是WinForms上的用户控制,但您的问题被标记为ASP.NET。你指的是GridView控制吗?无论哪种方式,两个控件都应该有一种方法让DataSource绑定到它们。您应该能够使用DataSource将更新推送到数据库。
  4. 我希望这些指针很有帮助。鉴于您在问题中提供的代码,我无法更具体。