您的位置:首页 > 数据库

DataRow使用Delete和用Remove方法效果

2012-02-15 21:18 357 查看
事故现场:


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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  delete 数据库