if (ds.Tables["myphoto"].Rows.Count != 0)
            {
                ds.Tables["myphoto"].Rows.Remove(ds.Tables["myphoto"].Rows[i]);            }            SqlCommandBuilder cb = new SqlCommandBuilder(da);            da.InsertCommand = cb.GetInsertCommand();
            da.UpdateCommand = cb.GetUpdateCommand();
            da.DeleteCommand = cb.GetDeleteCommand();            int a=da.Update(ds, "myphoto");
            ds.Tables["myphoto"].AcceptChanges();
在使用remove()方法移除一行之后.再update(),没有错误提示和异常,却不能更新数据库中的数据,
 逐语句发现,int a=da.Update(ds, "myphoto")中,a=0,而da(DataAdapter)中的三个Command都有值.. 为什么使用remove之后,不能更新数据呢!?  我的程序在数据集中更改行,添加行,都可以向数据库中返回数据,就这个不行. 我崩溃..

解决方案 »

  1.   

    你应该使用  ds.Tables["myphoto"].Rows[i].Delete(); 这样去删除;这个方法会记录行的状态;并不是真正的删除;
    ----------
    MSDN:
    当应用程序调用 Update 方法时,DbDataAdapter 根据 DataSet 中配置的索引顺序为每一行检查 RowState 属性,并迭代执行所需的 INSERT、UPDATE 或 DELETE 语句。
      

  2.   


    如果用ds.Tables["myphoto"].Rows[i].Delete(); ds.Tables["myphoto"].Rows.Count的值不会变,我希望Count的值跟着变 ..
      

  3.   

    如果用ds.Tables["myphoto"].Rows[i].Delete(); ds.Tables["myphoto"].Rows.Count的值不会变,我希望Count的值跟着变 ..
    ------------------------
    重新获取数据库已更新的数据,
    或者 调用 ds.Tables["myphoto"].AcceptChanges();
    这个行记录数就会跟着变