C# 如何从数据集中删除

C# 如何从数据集中删除,c#,sql,C#,Sql,如何从数据集中删除行,然后从数据库本身删除行?是否需要为此指定SQLCommand,或者数据库应自动更新?这是我的代码,我认为会工作,但没有删除完成 private void button1_Click(object sender, EventArgs e) { DataSet ds = new DataSet(); SqlDataAdapter daf = new SqlDataAdapter(); ds.Tables["Film"].Constraints.Add("PK_Film", d

如何从数据集中删除行,然后从数据库本身删除行?是否需要为此指定SQLCommand,或者数据库应自动更新?这是我的代码,我认为会工作,但没有删除完成

private void button1_Click(object sender, EventArgs e)
{
DataSet ds = new DataSet();

SqlDataAdapter daf = new SqlDataAdapter();
ds.Tables["Film"].Constraints.Add("PK_Film", ds.Tables["Film"].Columns["id"], true);

int ind = listBoxchildren.SelectedIndex;
listBoxchildren.DataSource = null;

ds.Tables["Film"].Rows[ind].Delete();
        ds.Tables["Film"].AcceptChanges();

daf.Update(ds,"Film");
listBoxchildren.DataSource = ds;
listBoxchildren.DisplayMember = "Director.fk_FilmDir.title";}

通常,当您传递SELECT语句以填充数据集或数据表时,数据适配器初始化其DeleteCommand、UpdateCommand和InsertCommand。在代码中,创建此
daf
变量时不给出任何Select语句,因此无法为已删除的行创建Delete命令

此外,您可以调用
AcceptChanges
,该函数的作用是从数据集的内存数据中删除已删除的行,从而消除更新方法查找应从数据库中删除的行的任何可能性

您需要添加两个内容并删除一行

在构建SqlDataAdapter时,向其添加Select语句

SqlDataAdapter daf = new SqlDataAdapter("select * from film", yourConnection);
SqlCommandBuilder builder = new SqlCommandBuilder(daf);
daf.DeleteCommand = builder.GetDeleteCommand();
然后拆下这条线

ds.Tables["Film"].AcceptChanges();
调用Delete时,该行仅标记为已删除,但仍在数据集表中。Update命令需要删除的行来获取在数据库表中执行删除所需的信息。

就是这样: 表[“表名”]。行[位置]。删除(); 然后,您的dataadapter更新: daf.update(ds.Tables[“TABLE NAME”])