我在dataset里删除一行后,用adapter的update方法去更新数据库,数据库的表没有删除此行为什么?但是我把dataset里一行更改后,用adapter的update方法去更新数据库就可以,不知道为什么.看了MSDN里说adapter的update方法能够根据数据集的更改删除去更新数据库相应的表呀.谢谢

解决方案 »

  1.   

    是不是adapter没有DeleteCommand?
      

  2.   

    查看一下DeleteCommand,是不是為NULL,用煎看式Show 一下你的SqlDataAdapter
      

  3.   

    出现这个问题有以下几种情况.
    1.检查你的SqlDataAdapter.DeleteCommand.CommandText的值,删除sql语句是否存在逻辑上的问题。
    2.通过DataSet删除数据有两种情况
    (1)间接或直接调用DataRow.Delete()方式,如果行的 RowState 是“Added”,则该行将从表中移除。在使用 Delete 方法后,RowState 变成“Deleted”。在您调用 AcceptChanges 之前,它一直保持“已删除”。可通过调用 RejectChanges 取消删除行。也实际通过SqlDataAdapter.Update来更新是判断行的RowState来决定是删除、添加、修改操作或什么都不做,更新后调用AcceptChanges 来重置RowState或直接删除该DataRow。
    (2)间接或直接调用DataRowCollection.Remove或DataRowCollection.RemoveAt方式,该方法直接删除DataRow,也就不存在RowState了,所以SqlDataAdapter.Update更新的时候无法发现该行的存在,因此不会做出对数据库数据的修改。
      

  4.   

    谢谢秋枫,知道原因了,我就是使用的第二种方法remove了一行,所以不能更新数据库.谢谢.结贴.怎么给分呀