我是ADO.NET
的新手,我试图了解断开连接的模型,我编写了一段代码,使用SqlDataAdapter
和SqlCommandBuilder
进行插入更新和删除,并且可以与插入和更新但不删除,这是为什么?以及如何解决?
这是我在事件处理程序中的代码,我有一个表“ 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");
答案 0 :(得分:4)
如果删除该行,则Update方法无法发现已删除的行。您需要使用Delete方法
idClass
当调用Delete方法时,已删除行的RowState属性更改为 DataRowState.Deleted ,但它仍存在于DataSet中。因此,当您调用Update时,该方法现在可以搜索具有与 DataRowState.Unchanged 不同的 RowState 的所有行,并对数据库表执行适当的操作