从DataSet删除行不会影响数据库

时间:2018-12-02 18:47:55

标签: c# sql-server ado.net

我是ADO.NET的新手,我试图了解断开连接的模型,我编写了一段代码,使用SqlDataAdapterSqlCommandBuilder进行插入更新和删除,并且可以与插入和更新但不删除,这是为什么?以及如何解决?

这是我在事件处理程序中的代码,我有一个表“ client”,其中包含3列ID,名称,城市和名为ds的数据集。

SqlDataAdapter ad = new SqlDataAdapter("select * from client", cnx);       
foreach (DataRow client in ds.Tables["client"].Rows)
{
    if (client.Field<int>(0) == 100)
    {
        ds.Tables["client"].Rows.Remove(client);
        break;
    }
}
new SqlCommandBuilder(ad);
ad.Update(ds, "client");

1 个答案:

答案 0 :(得分:4)

如果删除该行,则Update方法无法发现已删除的行。您需要使用Delete方法

idClass

当调用Delete方法时,已删除行的RowState属性更改为 DataRowState.Deleted ,但它仍存在于DataSet中。因此,当您调用Update时,该方法现在可以搜索具有与 DataRowState.Unchanged 不同的 RowState 的所有行,并对数据库表执行适当的操作