事故现场:
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();