DataRow使用Delete和用Remove方法效果

事故现场:

ds.Tables["Role"].Rows.RemoveAt(i),为什么数据适配器不能更新,同时不报错


ds.Tables[ "Role "].Rows.RemoveAt(1), 
OleDbDataAdapter   dataAdapter...... 
dataAdapter.update(ds, "role "); 
程序不报错,但是记录集中的值没有更新到数据库.


解决方案:

必须用DataTable的Delete()方法。而不能用Remove()方法。 

Delete()是挂起删除方法,他的作用不是删除内容,而是把DataTable中的指定行(DataRow)做一个删除标记,这样,当使用DataAdapter的时候,它才可以知道内存表的内容与数据库的不同,这样才可以删除数据库对应的内容。 

而如果使用Remove()或RemoveAt()方法,就是把当前行彻底删除,这样DataAdapter根本就不知道有这么一个要删除的行,当然数据库对应的行不会被删除了。 

Remove或RemoveAt方法是在DataTable中完全删除数据,而不是做标记,你肯定更新不了 
使用 
DataRow.Delete();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值