精品人妻无码一区二区三区软件 ,麻豆亚洲AV成人无码久久精品,成人欧美一区二区三区视频,免费av毛片不卡无码

您現(xiàn)在的位置是:首頁計(jì)算機(jī)信息管理論文

數(shù)據(jù)庫研究期刊論文范文

發(fā)布時(shí)間: 1

  DataSet是ADO.NET的一個重要組成部分,與以往的數(shù)據(jù)庫訪問技術(shù)不同的是,DataSet是一個不依賴于數(shù)據(jù)庫的獨(dú)立數(shù)據(jù)集合。DataSet將從數(shù)據(jù)庫中檢索到的數(shù)據(jù)存放在內(nèi)存中,即使斷開數(shù)據(jù)鏈路或關(guān)閉數(shù)據(jù)庫,DataSet依然能夠被使用,即支持離線訪問。

  摘要:DataSet是ADO.NET中的重要組件,它是一個存在于內(nèi)存中的離線數(shù)據(jù)庫。與關(guān)系型數(shù)據(jù)庫類似,DataSet支持多張表,可以建立表之間的關(guān)系以及數(shù)據(jù)之間的約束。該文介紹了DataSet的結(jié)構(gòu)及創(chuàng)建表、添加約束、更新數(shù)據(jù)的操作。

  關(guān)鍵詞:DataSet,ADO.NET,數(shù)據(jù)庫

  使用DataSet進(jìn)行編程,程序員不需理會不同數(shù)據(jù)庫之間的差異,因?yàn)闊o論DataSet中的數(shù)據(jù)來自于哪里,從它獲得的編程模型是一樣的。而且DataSet的模型與關(guān)系數(shù)據(jù)庫基本一致,例如它支持多張表、表與表之間的關(guān)系、數(shù)據(jù)之間的約束等。因此在編程時(shí)可以像訪問關(guān)系型數(shù)據(jù)庫一樣訪問DataSet。

  1DataSet的結(jié)構(gòu)

  在ADO.NET中,DataTable對象就是一張數(shù)據(jù)表,而DataRelation對象則是表達(dá)表之間關(guān)系的對象。DataSet可以看作是內(nèi)存中的離線數(shù)據(jù)庫,它的結(jié)構(gòu)類似于關(guān)系型數(shù)據(jù)庫,由DataTableCollection對象和DataRelationCollection對象組成,如圖1所示。DataTableCollection對象用作管理組成DataSet的多個DataTable對象,DataRelationCollection對象則對各表之間的關(guān)系進(jìn)行管理。

  2在DataSet中創(chuàng)建表

  DataSet中的數(shù)據(jù)表組成了名為Tables的集合,對數(shù)據(jù)集中表的各種操作都可以通過該集合對象進(jìn)行,如添加表、移除表和清除所有表。在DataSet對象中添加數(shù)據(jù)表的常見方法有直接創(chuàng)建數(shù)據(jù)表和通過DataAdapter對象填充。

  2.1直接創(chuàng)建數(shù)據(jù)表

  直接向DataSet中添加的數(shù)據(jù)表,它沒有對應(yīng)的數(shù)據(jù)源,以這種方式創(chuàng)建的數(shù)據(jù)表只存在于內(nèi)存中,對表中數(shù)據(jù)的修改無法更新到數(shù)據(jù)庫。以下以“客戶表”和“訂單表”為例,在DataSet中直接添加數(shù)據(jù)表的代碼如下:

  上述代碼只是向DataSet對象添加了兩張空表,表dt1和表dt2并沒有內(nèi)部結(jié)構(gòu)和數(shù)據(jù),要添加結(jié)構(gòu)和數(shù)據(jù),就得了解DataTable對象的相關(guān)操作。如圖1所示,DataTable對象主要由Columns、Rows、Constraints三個對象組成,它們分別是列的集合、行的集合、約束的集合。Columns對象用于定義DataTable數(shù)據(jù)表的架構(gòu),它由若干個DataColumn對象組成,負(fù)責(zé)管理數(shù)據(jù)表中的列,如增加列或刪除列。DataColumn列對象可以定義列名、列的類型,這與在關(guān)系型數(shù)據(jù)庫中定義字段相似,代碼實(shí)現(xiàn)如下:

  在建立列對象并添加到DataTable數(shù)據(jù)表之后,客戶表dt1就擁有了字符串類型的名為CustID的列和整型的名為CustName的列,即表dt1擁有了自己的架構(gòu)。同理訂單表dt2也可以創(chuàng)建OrderID、OrderTime和CustID三個列。

  在創(chuàng)建表dt1的架構(gòu)之后,該表依然沒有存儲任何數(shù)據(jù),要向表中添加數(shù)據(jù),可以通過DataTable的Rows屬性實(shí)現(xiàn)。Rows屬性是數(shù)據(jù)表中行的集合,它由若干個數(shù)據(jù)行組成,負(fù)責(zé)對DataTable中的行進(jìn)行管理。DataRow對象就是數(shù)據(jù)表中的一行,它用來創(chuàng)建數(shù)據(jù)行并添加數(shù)據(jù)。給數(shù)據(jù)表dt1添加兩行數(shù)據(jù)的操作如下:

  2.2通過DataAdapter填充

  雖然可以直接在DataSet中創(chuàng)建數(shù)據(jù)表,但實(shí)際應(yīng)用較少,更常見的是通過DataAdapter對象查詢數(shù)據(jù)庫,向DataSet中創(chuàng)建一個同結(jié)構(gòu)的數(shù)據(jù)表,將結(jié)果填充其中。實(shí)現(xiàn)如下:

  通過上述方法創(chuàng)建并填充數(shù)據(jù)的DataTable,它的結(jié)構(gòu)與數(shù)據(jù)源一致。在內(nèi)存中修改表中的數(shù)據(jù)后,可以手動更新到數(shù)據(jù)源。

  3添加表間約束和關(guān)系

  約束是數(shù)據(jù)庫強(qiáng)制用戶執(zhí)行的規(guī)則,以保證數(shù)據(jù)的完整性。DataSet被認(rèn)為是“內(nèi)存中的數(shù)據(jù)庫”,因此它同關(guān)系型數(shù)據(jù)庫一樣,可以設(shè)置主外鍵關(guān)聯(lián),建立表之間的關(guān)系。DataSet通過Constraint對象來實(shí)現(xiàn)約束,可以建立唯一約束和外鍵約束。將客戶表dt1與訂單表dt2中的“CustID”建立外鍵關(guān)聯(lián)的代碼如下:

  通過關(guān)系可以從父表的一列獲取子表對應(yīng)列中所有的行元素,比如從客戶表dt1中的CustID獲取訂單表dt2中的關(guān)于該客戶的所有訂單信息。

  4將數(shù)據(jù)更新到數(shù)據(jù)庫

  由于DataSet對象存儲于內(nèi)存中,對該對象中數(shù)據(jù)的更改并不會反映到數(shù)據(jù)源中,如果要將DataSet中修改后的數(shù)據(jù)更新到數(shù)據(jù)源,需借助DataAdapter對象和CommandBuilder對象。

  DataAdapter不會自動生成實(shí)現(xiàn)DataSet的更改與關(guān)聯(lián)的SQLServer實(shí)例之間協(xié)調(diào)所需的Transact-SQL語句。但是,如果設(shè)置了DataAdapter的SelectCommand屬性,則可以創(chuàng)建一個CommandBuilder對象來自動生成用于單表更新的Transact-SQL語句。然后,CommandBuilder將生成其他任何未設(shè)置的Transact-SQL語句,即對應(yīng)的insert、update、delete語句。下面是將DataSet中數(shù)據(jù)更新到數(shù)據(jù)庫的代碼:

  5小結(jié)

  DataSet是一個復(fù)雜而又強(qiáng)大的ADO.NET組件,該文對DataSet的結(jié)構(gòu)和組成作了簡要的介紹,通過實(shí)例分析,對DataSet的常用操作進(jìn)行了演示,為學(xué)習(xí)和研究數(shù)據(jù)庫編程提供了很好的參考。

  參考文獻(xiàn)

  [1]陳明忠,江永池.ASP.NET網(wǎng)站開發(fā)案例教程[M].北京:清華大學(xué)出版社,2011:119-125.

  [2]陳義輝,沙繼東.企業(yè)級網(wǎng)站開發(fā)項(xiàng)目教程(ASP.NET)[M].北京:中國人民大學(xué)出版社,2010:102-112.

  [3]陳燕群,張華貴,王海燕.ADO.NET數(shù)據(jù)庫編程淺析[J].電腦知識與技術(shù),2012(6):1316-1318.

  [4]高鵬,宋麗芳.NET數(shù)據(jù)庫操作淺析[J].北京農(nóng)業(yè)職業(yè)學(xué)院學(xué)報(bào),2011,25(3):21-24.

  [5]楊昭兵.基于ASP.NET數(shù)據(jù)庫的操作[J].科技廣場,2011(9):94-96.


轉(zhuǎn)載請注明來自:http://www.jinnzone.com/jisuanjixinxiguanlilw/28836.html