通过datagridview,对查询的数据修改后,想再通过按钮,再保存回数据库,不起作用呢;

请问我通过datagridview,对查询的数据修改后,再同步回数据库;

为此,所定义的保存按钮,所用代码如下,正常的数据库接语句,在这里就不贴出来了,但对查询后的数据修改后,一点保存,修改内容随即消失,请问哪里有问题呢, 请指导谢谢

  private void btnsave_Click_1(object sender, EventArgs e) 
        {
            //SqlCommand cmd = new SqlCommand(SqlString, conn);
            SqlDataAdapter sda = new SqlDataAdapter(SqlString, conn);
            //sda.SelectCommand = cmd;

            //SqlCommandBuilder SCB = new SqlCommandBuilder(sda);
            //DataSet dset = new DataSet();

            DataTable dt = new DataTable();

            sda.Fill(dt);

            dataGridView1.DataSource = dt;

            //DataTable dt = (dataGridView1.DataSource as DataTable);

            SqlCommandBuilder SCB = new SqlCommandBuilder(sda);

            dt.GetChanges();

            sda.Update(dt);

            MessageBox.Show("更新成功");

            End sub;
        }

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/176199
  • 这篇博客也不错, 你可以看下DataGridView移除多行选中数据,同时删除数据库数据
  • 除此之外, 这篇博客: 解决 DataGridView 自动新增列问题中的 可能出现的问题 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    1. 若对 DataGridView 进行了数据绑定 DataBinding,使用以上方法后仍然会自动生成新列。
      对于这种问题,可以将自动生成列的 Visible 属性设为 false
  • 您还可以看一下 王进老师的跟着王进老师学开发之C#篇第五季:图书管理系统课程中的 获取出版社信息展示在DataGridView中小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    针对修改无法保存的问题,可能出现以下几种情况:

    1. 没有开启数据库连接,需要将连接打开才能提交修改,可以使用以下代码:
    using(SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
    {
        conn.Open();
        //执行数据库操作,包括提交修改
    }
    
    1. 修改后未调用更新命令,需要将修改后的内容提交,可以使用以下代码:
    dataGridView1.EndEdit(); //结束编辑状态
    SqlDataAdapter da = new SqlDataAdapter(sql, conn);
    SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(da); //自动生成更新命令
    da.Update(dt); //提交修改
    
    1. 未设置DataGridView的DataPropertyName,导致修改后无法更新数据库,需要设置DataPropertyName属性,确保修改后的数据可以正确地绑定到DataTable中,可以使用以下代码:
    dataGridView1.Columns[0].DataPropertyName = "id"; //假设第一列是id列
    dataGridView1.Columns[1].DataPropertyName = "name"; //假设第二列是name列
    //以此类推,确保每列的DataPropertyName属性都正确设置
    

    需要根据具体情况逐一排除以上原因,找出导致无法保存修改的具体原因。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^