tableadapter - 删除行

时间:2013-02-26 23:18:28

标签: c# database visual-studio-2012

我在visual studio designer中创建了一个数据集。它有一个tableadaptor收费。

费用表中的一栏是“预订”。此列不是主键。

我想删除“预订”值为27的所有行。

我向chargeTableAdaptor添加了一个名为DeleteByBooking的查询。这是代码:

DELETE FROM charges
WHERE        (chargesid = @Original_chargesid)

在我的代码中,我然后运行:

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

尽管代码构建正常,并且应用程序运行正常,但没有行从数据库中删除!

我做错了什么?

2 个答案:

答案 0 :(得分:2)

  

我向chargeTableAdaptor添加了一个名为DeleteByBooking

的查询

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

chargesTableAdapter.DeleteByBooking(27);

如果要在(强类型)DataSet,DataTable或DataRow上使用Update功能,则必须提供DeleteCommand的{​​{1}}。

MSDN

  

TableAdapter更新方法

     

TableAdapter使用数据命令来读取和写入   数据库。 TableAdapter的初始Fill(main)查询用作   创建关联数据表的模式的基础,以及   InsertCommand,UpdateCommand和 DeleteCommand 命令   与 TableAdapter.Update 方法相关联。这意味着   调用TableAdapter的Update方法执行创建的语句   最初配置TableAdapter时,而不是其中之一   使用TableAdapter查询配置添加了其他查询   向导。

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

答案 1 :(得分:0)

如果您使用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();
}   

我希望它可以帮到你。 ;)