成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

初學(xué)者別看篇:ADO.NET對象

開發(fā) 后端
知道DataSet和DataTable對象是唯一的包含數(shù)據(jù)的ADO.NET對象嗎?本文將詳細的講解,還有關(guān)于運用具有BLOB字段的ExecuteXmlReader。

#T#學(xué)習(xí)了這么多關(guān)于編程的知識,在這里為大家簡單的分析一下關(guān)于ADO.NET對象吧。幾個ADO.NET對象都擁有一個叫做ExtendedProperties的集合。該屬性就像收集貨物(cargo collection)一樣,可以用來存儲任何類型的用戶信息。DataSet、DataTable和DataColumn就是可以提供該數(shù)據(jù)成員的類。ADO.NET通過運用 PropertyCollection類封裝的一個哈希表來實現(xiàn)這個ExtendedProperties屬性。你可以用Add方法將數(shù)據(jù)插入到集合中。 Add方法使用了兩個參數(shù)來保存數(shù)據(jù)——key和value.該方法的原形將參數(shù)定義為通用的對象類型,你可以存儲任何類型的信息。然而,在特殊情況下,你應(yīng)該特別注意那些被保存為擴展屬性的對象的類型,下面我們來深入的研究一下吧。

如果你想將包含擴展屬性的ADO.NET對象串行化到XML,***只用字符串。如果不行,你必須對ADO.NET的內(nèi)在的serializer的行為采取對策。當(dāng)ADO.NET將一個DataSet對象保存到XML時,ExtendedProperties集合的內(nèi)容就被串行化到內(nèi)存中了,但大概是出于性能的原因,ADO.NET運用了ToString方法,而不是XML serializer來實現(xiàn)串行化。更重要的是,當(dāng)ADO.NET對象被讀回并復(fù)原時,ExtendedProperties集合包含的是對象的字符串表現(xiàn)形式,而不是對象本身。

運用具有BLOB字段的ExecuteXmlReader

用于SQL Server的。NET數(shù)據(jù)提供者(data provider)使用了數(shù)據(jù)庫提供的XML擴展名,并提供了一個額外的方法(ExecuteXmlReader)來執(zhí)行查詢。命令對象上的所有的執(zhí)行者(例如ExecuteReader和ExecuteScaler)都采用不同的方法來得到結(jié)果集。ExcecuteReader通過一個托管指針(managed cursor)(data reader)來返回數(shù)據(jù),而ExecuteScaler返回結(jié)果集中的***個值,把它作為一個標(biāo)量值。ExecuteXmlReader執(zhí)行查詢,并返回已經(jīng)綁定到一個XmlTextReader對象的基于XML的輸出流。通過這種方式,你就不需要做額外的工作來以XML的方式加工數(shù)據(jù)了。要實現(xiàn)這一點,查詢字符串必須返回XML數(shù)據(jù)。對SQL Server來說,當(dāng)查詢字符串包含一個FOR XML子句時,就可以實現(xiàn)它。盡管這只是一種可能。
 
一個不太為人所知的情況是,要使ExecuteXmlReader工作,讓結(jié)果集包含XML數(shù)據(jù)就足夠了。下面的查詢方法很好,只要列包含XML格式的文本就行:SELECT data FROM table WHERE key=1這個列是個典型的BLOB或ntext字段,其文本顯示為XML.簡要地看看ExecuteXmlReader方法的內(nèi)部結(jié)構(gòu)會有助于我們的理解。該方法用ExecuteReader來執(zhí)行查詢,并從數(shù)據(jù)提供者得到一個數(shù)據(jù)流對象。接下來,它將數(shù)據(jù)流綁定到XmlTextReader類的一個新創(chuàng)建的實例上,這個實例被返回給調(diào)用者。連接一直處于忙碌狀態(tài),直到XML reader停止工作。SQL Server提供者是唯一的提供者,它提供了方法讓我們從一個XML reader直接讀取數(shù)據(jù),但這種做法更多的是與提供者有關(guān),而與數(shù)據(jù)庫性能的關(guān)系并不大。Oracle支持XML查詢,但Oracle的數(shù)據(jù)提供者并不支持XML查詢。相比之下,為OLE DB數(shù)據(jù)提供者編寫一個ExecuteXmlReader方法并不難(點此下載實例)。
 
不要設(shè)法緩存一個DataView

DataSet和DataTable對象是唯一的包含數(shù)據(jù)的ADO.NET對象。DataView是一個不能串行化的、輕量級的類,它只代表構(gòu)建在一個表上的視圖(view)。你可以根據(jù)一個表達式或行的狀態(tài)來過濾視圖。許多應(yīng)用程序都需要你管理數(shù)據(jù)視圖并將它們綁定到數(shù)據(jù)控件上,如Windows和Web DataGrid控件。一個DataView對象不能緩存數(shù)據(jù);它只是緩存了與當(dāng)前過濾器相匹配的基本的表中的行的索引。緩存索引的順序與當(dāng)前的排序表達式一致。緩存DataView而不緩存基本的DataTable是不行的。
 
例如,提供分頁(比如通過運用DataGrid控件)的ASP.NET應(yīng)用程序通常以一個DataView對象結(jié)尾,因為它支持排序和過濾。在有些情況下(大多是基于性能的原因),你可能決定要緩存數(shù)據(jù)源。要緩存的對象不能是DataView(它是你實際綁定的對象)。一個DataView只是一種索引,如果沒有基本的DataTable對象,它是沒有用的。

責(zé)任編輯:田樹 來源: CSDN
相關(guān)推薦

2009-10-29 09:19:59

ADO.NET

2009-12-24 17:26:00

ADO創(chuàng)建表

2009-11-04 12:45:33

ADO.NET Dat

2009-10-29 13:34:01

ADO.NET對象

2009-11-03 15:24:14

ADO.NET對象模型

2009-11-04 10:23:05

ADO.NET Con

2009-12-21 17:35:24

ADO.NET對象

2009-11-13 14:38:45

ADO.NET Dat

2009-12-21 17:02:19

ADO.NET Sql

2009-06-18 09:56:44

ADO.NET對象模型

2009-06-30 15:22:00

Java還是.NET

2009-09-28 10:34:43

NET初學(xué)者學(xué)習(xí)建議

2009-11-12 16:04:42

ADO.NET對象查詢

2009-12-28 13:47:31

ADO.NET對象

2009-12-18 14:27:24

ADO.NET對象

2009-11-04 11:30:35

ADO.NET Dat

2009-11-03 09:48:47

VB.NET構(gòu)造

2009-11-04 09:52:10

ADO.NET Sql

2009-11-11 10:55:10

ADO.NET對象

2009-11-12 15:55:31

ADO.NET對象服務(wù)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 91麻豆精品一区二区三区 | 国产激情视频在线观看 | 一本一道久久a久久精品综合 | 欧美二区三区 | 91久久精品国产91久久性色tv | 国产日本精品视频 | 欧美一区视频 | 免费一级片 | 国产不卡一区在线观看 | 亚洲一页 | 国产精品久久久久久久免费大片 | 密室大逃脱第六季大神版在线观看 | 日韩欧美一区在线 | 啪啪网页| 色欧美片视频在线观看 | 久久人| 人成久久| 91免费高清视频 | 国产激情自拍视频 | 日韩一区二区在线视频 | 精品久久久久一区 | 在线一区视频 | 久久三区 | 午夜免费视频 | 日本精品一区 | 爱草在线 | 日本久久网 | 成年人在线播放 | 日韩视频免费看 | 作爱视频免费观看 | 国产欧美视频一区 | 成人av播放| 久热精品视频 | 成人精品鲁一区一区二区 | 亚州国产 | 操久久 | 人人爽人人草 | 亚洲精品久久久 | 国产91丝袜在线播放 | 91夜色在线观看 | 精品美女久久久久久免费 |