c#
  • winforms
  • dataset
  • 2011-11-28 114 views 1 likes 
    1

    我正在处理连接到sql server的数据集,我想要做的是一次删除多行,然后将更改保存到sql server。我用下面的代码试了一下:将数据集更改为数据库

    DataRow[] rows = this.computechDataSet.VALHIS.Select("VAL_SRT = '" + this.computechDataSet.V_ALUTA.Rows[this.v_ALUTABindingSource.Position][0].ToString() + "'"); 
    foreach (DataRow row in rows) 
    { 
        row.Delete(); 
    } 
    this.computechDataSet.VALHIS.AcceptChanges(); 
    this.tableAdapterManager.UpdateAll(this.computechDataSet); 
    

    该行确实会从数据集(通过输出数据表rowcounts找到了)删除,但所做的更改不会保存到我的SQL数据库。我在添加/编辑/删除其他表上的行时没有任何问题,除了在这些情况下我一次执行一行的操作。

    回答

    2

    尝试没有AcceptChanges

    DataRow[] rows = this.computechDataSet.VALHIS.Select("VAL_SRT = '" + this.computechDataSet.V_ALUTA.Rows[this.v_ALUTABindingSource.Position][0].ToString() + "'"); 
    foreach (DataRow row in rows) 
    { 
        row.Delete(); 
    } 
    this.tableAdapterManager.UpdateAll(this.computechDataSet); 
    
    0

    通过发出以下方法尽量不显式循环的数据行。

    this.computechDataSet.VALHIS.Select("VAL_SRT = '" + this.computechDataSet.V_ALUTA.Rows[this.v_ALUTABindingSource.Position][0].ToString() + "'").Delete(); 
    
    相关问题