当前位置:编程学习 > C#/ASP.NET >>

为什么这个程序无法删除数据表的行?

有个数据表内有两列:类别编号,类别名称

 

图书类别表TableAdapter adapter = new 图书类别表TableAdapter();

            testDataRelation.db3DataSet.图书类别表DataTable tbl = adapter.GetData();

            tbl.Rows.RemoveAt(图书类别表DataGridView.CurrentRow.Index);
            
            adapter2.Update(tbl);

试了下不行

为什么无法删除呢?

--------------------编程问答-------------------- objDataSet.Tables["item"].Rows.Remove(r);
objDataSet.Tables["item"].AcceptChanges();
--------------------编程问答-------------------- 我的代码错误在哪

remove方法不是不需要acceptchange的吗 --------------------编程问答-------------------- 有人帮我看看么 急 --------------------编程问答-------------------- RemoveAt需要AcceptChanges吧
你加上试试 吗 --------------------编程问答-------------------- 初始化一个DataRow:
DataTable dataTable=dataSet.Tables[0];
DataRow newRow=dataTable.NewRow(); //用dataTable生成DataRow可以利用dataTable里面的模式
dataTable.Rows.Add(newRow);

删除行:
DataTable.Rows.Remove(行实例);
DataTable.Rows.RemoveAt(行号);
DataRow.Delete(); //行自身移除

--------------------编程问答-------------------- 看下!
--------------------编程问答-------------------- 加上也不起作用的 --------------------编程问答-------------------- 看下我发的几个删除的方法
不一定非要用这个方法! --------------------编程问答-------------------- removeAt和remove方法我都用了啊 都不行 问题可能不在这…… --------------------编程问答-------------------- 增加行是可以的,就是删除不行哎 --------------------编程问答--------------------     你要删除内存的数据还是数据库中的数据? --------------------编程问答-------------------- 给你说个笨方法
写SQL语句删除!!!!!!!! --------------------编程问答-------------------- 这个主要是你没有真正理解SqlDataAdapter的update方法。
update方法是根据RowState进行对数据库表的更新的,
在做新增、删除(Delete,只是标示行状态)、更新,update方法
都会去校验操作行的行状态是否改变,发生改变才会真正到数据库更新
相关数据。
但是remove、removeAt是直接删除表里面的数据(再DataTable中),
行都不存在了,就没有所谓的行状态变化,所有不会真正到数据库更新
相关数据。
另外在执行update之前不能对数据集执行AcceptChanges,否则数据库
也更新不了相关的数据。
建议要删除直接用delete --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- adapter2哪里来的 --------------------编程问答-------------------- 在循环中进行删除操作,要倒过来进行操作,防止索引越界
DataRow.Delete()后要记住AcceptChanges 
or 
DataRow[]   drs   =   DataTabl1.Select( ""); 
for(   int   i=0   ;   i <drs.Count   ;   i++   ) 

    DataTable1.Rows.Remove(   drs[i]   ); 
} --------------------编程问答-------------------- 13楼正解。前几天我也被同样问题困扰了好久,最后发现调用
Delete()
方法再更新数据库就行。

//………………
dataTable.Rows[1].Delete();
adapter.Update(dataTable);
--------------------编程问答-------------------- 感谢13楼和18楼

用delete方法确实可以


但是remove和removeAt和adapter的update方法不兼容我还是想不太通

如果说不用update方法

如何将remove和removeAt方法对datatable所做的更改提交给数据库?

是不是还有其他更好的方式 --------------------编程问答--------------------
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,