【问题标题】:tableadaptor - delete rowstableadaptor - 删除行
【发布时间】:2013-02-26 23:18:27
【问题描述】:

我在 Visual Studio Designer 中创建了一个数据集。它有一个用于充电的表格适配器。

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

我想删除 '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);

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

请问我做错了什么?

【问题讨论】:

    标签: c# database visual-studio-2012


    【解决方案1】:

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

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

    chargesTableAdapter.DeleteByBooking(27);
    

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

    MSDN

    TableAdapter 更新方法

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

    请注意,如果您在 TableAdapter 配置向导中选择一个表,则会自动创建这些命令。如果你加入多个表,你必须手动创建更新、插入和删除命令。

    【讨论】:

    • 对不起,我原来的帖子有错误。我的删除查询称为 DeleteBookingCharges 所以我上面代码的第一行与您在回答中建议的相同。当它到达那条线时它什么也没做?!谢谢
    • @MatthewWinter:对不起,我不太明白。您是否在 TableAdapter 中提供了删除命令?然后你可以删除该行,例如通过调用chargeRow.Delete(); 后跟this.chargesTableAdapter.Update(this.quick_quoteDataSet.charges);。如果您想在不使用Update 的情况下删除它,您必须提供手动查询,您可以使用chargesid 等所需参数调用该查询。顺便说一句,EndEdit 不是必需的,尽量省略它,我不知道它有什么后果。
    【解决方案2】:

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

    希望对你有帮助。 ;)

    【讨论】:

      猜你喜欢
      • 2013-01-04
      • 2012-01-03
      • 1970-01-01
      • 2017-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多