C#中,mdf数据库操作问题

以下(A),(B)都是将dataSet1.Tables[0]的第一条记录删除(A)dataSet1.Tables[0].Rows.RemoveAt(0);(B)dataS... 以下(A),(B)都是将dataSet1.Tables[0]的第一条记录删除
(A)dataSet1.Tables[0].Rows.RemoveAt(0);
(B)dataSet1.Tables[0].Rows[0].Delete();

问题是:
1.(A),(B)有何驱别?
2.执行(A)后,再执行 Oda1.Update(dataSet1.Tables[0]);更新数据库后,重新打开数据库,第一记录还是没有被删除。
3.执行(B)后,再执行button1.Text = dataSet1.Tables[0].Rows[0][0].ToString(); 出错提示:不能通过已删除的行访问该行信息。
展开
 我来答
syht2000
高粉答主

2014-03-29 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
A是从数据集中移除那条数据,并没有对数据本身进行处理,所以用oda1.update之后,是不会对数据库中的数据进行删除的。
B中的delete则是对指定行做了删除标记,已经做了删除标记的行就不能再访问了(此时数据仍然在dataset中,这个操作是可以用RejectChanges撤消的),如果再执行AcceptChanges(),数据就会从dataset中删除。
数据状态的变化以及AcceptChanges之类的用法,可以参见
http://blog.csdn.net/td13560142839/article/details/7468387
http://www.douban.com/note/161997555/
菜锡a
2014-03-29 · 超过28用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:70万
展开全部
dateset 是从数据库里面读取出来的数据。
dataSet1.Tables[0].Rows.RemoveAt(0);是删除该 dataset 中datatbale的 第一行的内的数据 并不是删除 数据库内的数据。RemoveAt 方法从父级的集合中移除位于指定索引值的子对象。
dataSet1.Tables[0].Rows[0].Delete();是将 dataset 中datatbale的 第一行 标记为删除,就是 RowState 变成“Deleted”。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式