我在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);
尽管代码构建正常,并且应用程序运行正常,但没有行从数据库中删除!
我做错了什么?
答案 0 :(得分:2)
我向chargeTableAdaptor添加了一个名为DeleteByBooking
的查询
如果手动添加查询,则必须手动在TableAdapter实例上调用此方法:
chargesTableAdapter.DeleteByBooking(27);
如果要在(强类型)DataSet,DataTable或DataRow上使用Update
功能,则必须提供DeleteCommand
的{{1}}。
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();
}
我希望它可以帮到你。 ;)