C# 从数据集中删除行不会影响数据库
我是ADO.NET的新手,我试图理解断开连接的模型,我编写了一个代码,使用SqlDataAdapter和SqlCommandBuilder执行inset更新和删除,它使用insert和update,但不使用delete,这是为什么?以及如何修复它 这是我在事件处理程序中的代码,我有一个表客户机,它有3列id、name、city和名为ds的数据集C# 从数据集中删除行不会影响数据库,c#,sql-server,ado.net,C#,Sql Server,Ado.net,我是ADO.NET的新手,我试图理解断开连接的模型,我编写了一个代码,使用SqlDataAdapter和SqlCommandBuilder执行inset更新和删除,它使用insert和update,但不使用delete,这是为什么?以及如何修复它 这是我在事件处理程序中的代码,我有一个表客户机,它有3列id、name、city和名为ds的数据集 SqlDataAdapter ad = new SqlDataAdapter("select * from client", cnx);
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");
如果删除该行,更新方法将无法发现已删除的行。您需要使用Delete方法
foreach (DataRow client in ds.Tables["client"].Rows)
{
if (client.Field<int>(0) == 100)
{
client.Delete();
break;
}
}
调用Delete方法时,已删除行的属性将更改为DataRowState.deleted,但它仍存在于数据集中。因此,当您调用更新时,该方法现在可以搜索RowState与DataRowState不同的所有行。如果您删除该行,则更新方法无法发现已删除的行。您需要使用Delete方法
foreach (DataRow client in ds.Tables["client"].Rows)
{
if (client.Field<int>(0) == 100)
{
client.Delete();
break;
}
}
调用Delete方法时,已删除行的属性将更改为DataRowState.deleted,但它仍存在于数据集中。因此,当您调用更新时,该方法现在能够搜索RowState与DataRowState不同的所有行。Unchanged并对数据库表执行适当的操作