日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

DataTable的AcceptChange方法为什么不能在Update之前?

發(fā)布時(shí)間:2025/3/21 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DataTable的AcceptChange方法为什么不能在Update之前? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本人轉(zhuǎn)載http://www.cnblogs.com/telnet_mike/archive/2011/08/29/2159013.html

總結(jié):DataTable.AcceptChanges相當(dāng)于將DataTable表中的所有DataRow的RowState狀態(tài)?重置為Unchanged

?DataTable.RejectChanges方法:回滾自該表加載以來或者上次調(diào)用AcceptChanges以來對(duì)該表進(jìn)行的所有更改;并且DataTable表中的所有DataRow的RowState狀態(tài)?重置為Unchanged

例子:

?DataTable dataTable = ds.Tables[0];

?dataTable.Rows[0][0] = 96.6669;//此時(shí)的RowState為Modied

?dataTable.AcceptChanges();//此時(shí)的RowState為Unchanged

?dataTable.Rows[0][0] = 7777;此時(shí)的RowState為Modied此時(shí)的RowState為Modied
?dataTable.RejectChanges();//此時(shí)的dataTable.Rows[0][0] 為96.6669,RowState為Unchanged

?

//最后?Update需要注意的是;防止并發(fā)性的操作。有在Update執(zhí)行之前所包含的數(shù)據(jù)行有被修改,則會(huì)發(fā)生并發(fā)性操作錯(cuò)誤。

da.Update(dataTable);

解決并發(fā)性辦法:

?if (dataTable.GetChanges() != null)
??{
???????da.Update(dataTable.GetChanges());
??}?

?

?

AcceptChanges方法會(huì)將所有改動(dòng)保存到DataSet或DataTable中,使得所有行的狀態(tài)都是Unchanged(沒有被更改狀態(tài))

而DataAdapter.Update方法在保存數(shù)據(jù)到數(shù)據(jù)庫(kù)表時(shí)做過一個(gè)檢查,即檢查表行是否被修改過,如果沒被修改過,那么更需將不會(huì)執(zhí)行任何命令,直接跳過本行,開始檢查下一行,如此,一個(gè)表如果行都是Unchanged狀態(tài),那么它就不會(huì)被更新到數(shù)據(jù)庫(kù)中。

所以,在更改了DataSet或DataTable后,若想調(diào)用DataAdapter.Update方法直接更新數(shù)據(jù)到數(shù)據(jù)庫(kù),那么你只需要這個(gè)Update方法,無(wú)需在此前調(diào)用一次AcceptChanges方法了。

?

?

?

Added

該行已添加到 DataRowCollection 中,AcceptChanges尚未調(diào)用。?

Deleted

該行已通過 DataRow 的 Delete 方法被刪除。

Detached

該行已被創(chuàng)建,但不屬于任何 DataRowCollection。DataRow 在以下情況下立即處于此狀態(tài):創(chuàng)建之后添加到集合中之前;或從集合中移除之后。?

Modified

該行已被修改,AcceptChanges 尚未調(diào)用。

Unchanged

該行自上次調(diào)用 AcceptChanges 以來尚未更改。?

?

?

DataTable.AcceptChanges方法:提交自上次調(diào)用AcceptChanges以來對(duì)該表進(jìn)行的所有更改。

調(diào)用AcceptChanges時(shí),任何仍處于編輯模式的DataRow對(duì)象將成功結(jié)束其編輯。DataRowState也發(fā)生更改:所有Added和Modified行成為Unchanged;Deleted行被移除。

在您嘗試使用DbDataAdapter.Update方法更新DataSet之后,通常會(huì)對(duì)DataTable調(diào)用AcceptChanges方法。

?

?

DataTable.RejectChanges方法:回滾自該表加載以來或上次調(diào)用AcceptChanges以來對(duì)該表進(jìn)行的所有更改。

調(diào)用RejectChanges時(shí),任何仍處于編輯模式的DataRow對(duì)象將取消其編輯。新行被移除。DataRowState設(shè)置為Modified或Deleted的行返回到其初始狀態(tài)。

會(huì)出現(xiàn)對(duì)DataTable進(jìn)行多次更改,但是通過調(diào)用RejectChanges方法拒絕這些更改的現(xiàn)象

?

?

DataRow.BeginEdit方法:對(duì)DataRow對(duì)象開始編輯操作。

使用BeginEdit方法將DataRow置于編輯模式。在此模式中,事件被臨時(shí)掛起,以便允許用戶在不觸發(fā)驗(yàn)證規(guī)則的情況下對(duì)多行進(jìn)行多處更改。例如,如果需要確保總數(shù)列的值等于某行中借貸列的值,則可以將每一行都置入編輯模式,以便在用戶嘗試提交值之前掛起對(duì)行值的驗(yàn)證。

BeginEdit方法在用戶更改數(shù)據(jù)綁定控件的值時(shí)被隱式調(diào)用;EndEdit方法在您調(diào)用DataTable對(duì)象的 AcceptChanges方法時(shí)被隱式調(diào)用。

?

出自:http://blog.csdn.net/td13560142839/article/details/7468406

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的DataTable的AcceptChange方法为什么不能在Update之前?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。