tableadaptor - delete rows
本文关键字:rows delete tableadaptor | 更新日期: 2023-09-27 18:01:12
我在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
功能,则必须提供TableAdapter
的DeleteCommand
。
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();
}
我希望它能帮助你。;(