C# 如何从数据集中删除
如何从数据集中删除行,然后从数据库本身删除行?是否需要为此指定SQLCommand,或者数据库应自动更新?这是我的代码,我认为会工作,但没有删除完成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
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”])