【问题标题】:Changes to DataGridView aren't being reflected in database对 DataGridView 的更改未反映在数据库中
【发布时间】:2017-12-11 00:27:09
【问题描述】:

我有一个 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);
        }
    }

【问题讨论】:

    标签: c# .net winforms datagridview dataadapter


    【解决方案1】:

    你的代码有几个问题:

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

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

    3. 您的问题是指DataGridView,我认为它是WinForms 上的用户控件,但您的问题被标记为ASP.NET。您指的是GridView 控件吗?无论哪种方式,两个控件都应该有办法将DataSource 绑定到它们。您应该可以使用 DataSource 将更新推送到数据库。

    我希望这些建议对您有所帮助。鉴于您在问题中提供的代码,我无法更具体。

    【讨论】:

    • 感谢您到目前为止的帮助。我正在使用 Winforms 和 DataGridView,因此我相应地调整了我的标签。我还实现了using 声明。但是,为了初始化 DataAdapter,您确实需要指定 SELECT 命令。
    猜你喜欢
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多