tableadaptor语言 - delete rows



我在visualstudio设计器中创建了一个数据集。它有一个充电表适配器。

费用表中的一列是"预订"。此列不是主键。

我想删除"booking"值为27的所有行。

我向chargesTableAdaptor添加了一个名为DeleteByBooking的查询。它的代码:

DELETE FROM charges
WHERE        (chargesid = @Original_chargesid)

然后在我的代码中运行:

this.chargesTableAdapter.DeleteBookingCharges(27);
this.chargesBindingSource.EndEdit();
this.chargesTableAdapter.Update(this.quick_quoteDataSet.charges);

尽管代码构建良好,应用程序运行正常,但不会从数据库中删除任何行!

请问我做错了什么?

我向chargesTableAdaptor添加了一个名为DeleteByBooking 的查询

如果手动添加查询,则必须手动在TableAdapter实例上调用此方法:

chargesTableAdapter.DeleteByBooking(27);

如果要在(强类型(DataSet、DataTable或DataRow上使用Update功能,则必须提供TableAdapterDeleteCommand

MSDN

TableAdapter更新方法

TableAdapters使用数据命令对数据库TableAdapter的初始Fill(main(查询用作创建关联数据表的模式的基础,以及InsertCommand、UpdateCommand和DeleteCommand命令与TableAdapter.Update方法关联。这意味着调用TableAdapter的Update方法执行创建的语句最初配置TableAdapter时,而不是使用TableAdapter查询配置添加的附加查询男巫

请注意,如果在TableAdapter配置向导中选择一个表,则会自动创建命令。如果连接多个表,则必须手动创建Update、Insert和DeleteCommand。

如果您使用dataGrid作为控件,您可以在不使用SQL查询的情况下尝试此操作,同样,您也可以通过编辑数据集行来调整此代码。

DataSet.yourRow iAmARow;
try
{
   iAMARow = 
   this.yourDataSet.yourTable.FindByBooking(nameOfTheColumn);
   if (iAmARow != null)
   {
       iAmARow.Delete();
       this.yourTableAdapter.Update(this.yourDataSet);
       this.yourDataSet.yourTable.AcceptChanges();
   }
}
catch (SqlException ex)
{
   ex.StackTrace.ToString();
}   

我希望它能帮助你。;(

最新更新