通过DataSet更新数据库,我的原理是这样的, 一个用户控件(里面放了和数据库表对应的绑定列,)
一个DataGridView,两个同时共用一个数据集ds,正常情况操作下修改,删除是没问题的,但按如下步骤就会出错;1.先修改一条记录中的某个值没空(修改前该字段值不为空),不是NULL,
2.点击保存数据,保存成功,
3.再点击删除该记录,错误就发生了.说影响了1条记录的0行

解决方案 »

  1.   

    简单的就是:通过DataGridView绑定数据集ds
    1.先修改一条记录中的某个值为空(修改前该字段值不为空,即有值),不是NULL,
    2.点击保存数据,保存成功,同时也调用了ds的Acceptchange()方法.
    3.再点击删除该记录,错误就发生了.说影响了1条记录的0行
      

  2.   

    点删除是删除ds选中的行,然后调用与数据库更新的方法,即Update(ds.getchange());
    我其它的步骤新增,修改,删除都没问题,就是上面的情况才出问题.
      

  3.   

    你去看看自动生成的DeleteCommand就知道了
    我一般都是自己加一个delete的查询到table adapter
      

  4.   

    3.再点击删除该记录,错误就发生了.说影响了1条记录的0行
    ====================================================
    1,启动SQlprofilter追踪SQL指令的执行情况
    2,BtnDElete_Click()
    {
    messagebox.show(dataset的当前行的某个字段的值,看看是否为null)
    }== 建议用SQL指令操作
    sqlcommand deletecmd=new sqlcommand(deletestr,cnn)
    cnn.open()
      

  5.   

    保存在DataSet中,删除是在数据库表中执行,冲突了
      

  6.   

    3.再点击删除该记录,错误就发生了.说影响了1条记录的0行答:
    1,启动SQlprofilter追踪SQL指令的执行情况
    2,BtnDElete_Click()
    {
    messagebox.show(dataset的当前行的某个字段的值,看看是否为null)
    }== 建议用SQL指令操作
    sqlcommand deletecmd=new sqlcommand(deletestr,cnn)
    cnn.open()或者可能是:
    保存在DataSet中,删除是在数据库表中执行,冲突了
      

  7.   

    直接用sql写把,这样保险点,还能随时在sqlserver里查
      

  8.   

    我已经解决了,!是在每个修改的列值为""时给它设置为Syste.DbNULL.Values在保存就可以
    接帖