weixin_38707867
weixin_38707867
采纳率0%
2017-08-24 02:01

违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条。

图片说明
写了个在dataGridView控件中修改数据后,点击按钮后自动更新到数据库的代码,
PS:主键已经设置了,但是还是这个报错,第一次点击按钮能成功不会报错,再修改一条点击更新后,就会报错,但是表有时还能改过来!跪求各位大神解答

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • u012556249 风中的千纸鹤 4年前

    http://www.cnblogs.com/litianfei/archive/2007/08/16/858866.html
    可以参考一下,应该有你需要的

    点赞 评论 复制链接分享
  • weixin_38707867 weixin_38707867 4年前

    已经困扰我没办法了!贴上代码
    private void btModifier_Click(object sender, EventArgs e)
    {
    string strSql = "select * From 部门表";
    SqlDataAdapter adapter = new SqlDataAdapter();
    adapter.SelectCommand = new SqlCommand(strSql, myconnection);
    DataSet ads = new DataSet();
    adapter.Fill(ads, "部门表");
    DataTable dt = new DataTable();
    dt = ads.Tables["部门表"];
    dt.Rows.Clear();
    // dt.PrimaryKey = new DataColumn[] { dt.Columns["部门号"] };//设置表的主键,这句能修改原来建表时设定的主键,每个表只有一个主键
    adapter.FillSchema(dt, SchemaType.Mapped);
    DataTable dtShow = new DataTable();
    dtShow = (DataTable)dataGridView1.DataSource;
    for (int i = 0; i < dtShow.Rows.Count; i++)
    {
    dt.ImportRow(dtShow.Rows[i]);
    }
    // try
    // {
    SqlCommandBuilder CommandBuiler;
    CommandBuiler = new SqlCommandBuilder(adapter);
    // MessageBox.Show("调试代码444");
    if (dt.GetChanges() == null)
    {
    // adapter.Update(dt.GetChanges());

                }
    
    
                adapter.Update(dt);
                dt.AcceptChanges();
                MessageBox.Show("修改成功");
    
    
                if (dt.GetChanges() == null)
                {
                   // adapter.Update(dt.GetChanges());
    
    
                }
    
    
    
              //  MessageBox.Show("调试代码6744");
    
    
          //  }
         //   catch (Exception ex)
          //  {
                //MessageBox.Show("调试代码3!" + ex.ToString());
    
           // }
    
        }
    
    点赞 评论 复制链接分享
  • fisher_china 白羊佐 9月前

    你这是改了哪才解决的错误啊,看不出来

    点赞 评论 复制链接分享

相关推荐