




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、DataSet用法詳細(xì)、特點(diǎn)介紹1、處理脫機(jī)數(shù)據(jù),在多層應(yīng)用程序中很有用。2、 可以在任何時(shí)候查看DataSet中任意行的內(nèi)容,允許修改查詢結(jié)果的方法。3、處理分級(jí)數(shù)據(jù)4、緩存更改5、XML的完整性:DataSet對(duì)象和XML文檔幾乎是可互換的。、使用介紹1、創(chuàng)建DataSet對(duì)象:DataSet ds = new DataSet("DataSetName");2、查看調(diào)用SqlDataAda pter.Fill創(chuàng)建的結(jié)構(gòu)da.Fill(ds,"Orders");DataTable tbl = ds.TableO; foreach(DataColumn
2、col in tbl.Columns) Console.WriteLine(col.ColumnName);3、查看SqlDataAdapter返回的數(shù)據(jù) DataRow對(duì)象DataTable tbl = ds.Table0;DataRow row = tbl.Row0;Console.WriteLine(ros"OrderlD"); 檢查存儲(chǔ)在 DataRow中的數(shù)據(jù)DataTable tbl = row.Table; foreach(DataColumn col in tbl.Columns) Console.WriteLine(rowcol); 檢查DatTable中
3、的DataRow對(duì)象foreach(DataRow row in tbl.Rows) Disp layRow(row);4、校驗(yàn)DataSet中的數(shù)據(jù) 校驗(yàn) DataColu mn 的屬性:Read Only, AllowDBNull,MaxLe ngth,U nique DataTable 對(duì)象的 Constrains 集合:UiqueConstraints,Primarykey, ForeignkeyConstraints通常不必刻意去創(chuàng)建ForeignkeyConstraints,因?yàn)楫?dāng)在DataSet的兩個(gè)DataTable對(duì)象之間創(chuàng)建關(guān)系時(shí)會(huì)創(chuàng)建一個(gè)。 用SqlDataAdapter
4、.Fill模式來檢索模式信息5、編寫代碼創(chuàng)建 DataTable對(duì)象 創(chuàng)建DataTable對(duì)象:DataTable tbl = new DataTable("TableName"); 將DataTable添加到 DataSet對(duì)象的Table集合DataSet ds = new DataSet();DataTable tbl = new DataTable("Customers");ds.Tables.Add(tbl);DataSet ds = new DataSet();DataTable tbl = ds.Tables.Add("Cust
5、omers");DataTable對(duì)象只能存在于至多一個(gè)DataSet對(duì)象中。如果希望將DataTable添加到多個(gè) DataSet中,就必須使用Copy方法或Clone方法。Copy方法創(chuàng)建一個(gè)與原 DataTable結(jié)構(gòu)相同并且包含相同 行的新DataTable; Clone方法創(chuàng)建一個(gè)與原DataTable結(jié)構(gòu)相同,但沒有包含任何行的新DataTable。 為DataTable添加列DataTable tbl = ds.Tables.Add("Orders");DataColumn col =tbl.Columns.Add("OrderlD&quo
6、t;,t yp eof(int);col.AllowDBNull = false;col.MaxLength = 5;col.Unique = true;tbl. PrimaryKey = new DataColumntbl.Columns"CustomersID"當(dāng)設(shè)置主鍵時(shí), AllowDBNull自動(dòng)設(shè)置為False; 處理自動(dòng)增量列DataSet ds = new DataSet();DataTable tbl = ds.Tables.Add("Orders");DataColumn col = tbl.Columns.Add("Ord
7、erID",t yp eof(int);col.AutoIncrement = true;col.AutoIncrementSeed = -1;col.AutoIncrementSte p = -1;col.ReadOnly = true;添加基于表達(dá)式的列tbl.Columns.Add("ItemTotal",ty peof(Decimal),"Quantity*Unit Price");6、修改DataTable內(nèi)容 添加新DataRowDataRow row = ds.Tables"Customers".NewRow(
8、);row"CustomerlD" = "ALFKI"ds.Tables"Customers".Rows.Add(row);object aValues ="ALFKI","Alfreds","Anders","030-22222"da.Tables"Customers".LoadDataRow(aValues,false); 修改當(dāng)前行修改行的內(nèi)容逼供內(nèi)不會(huì)自動(dòng)修改數(shù)據(jù)庫中相應(yīng)的內(nèi)容,對(duì)行所做的修改被視為是隨后將使用 SqlDataA
9、dapter對(duì)象來提交交給數(shù)據(jù)庫的待定的更改。DataRow rowCustomer;rowCustomer = ds.Tables"Custoemrs".Rows.Find("ANTON");if(rowCustomer = null)/沒有查找客戶elserowCustomer"Co mp anyName" ="NewCo mp anyName"rowCustomer"ContactName" ="NewContactName"/推薦使用這種方式DataRow rowCu
10、stomer;rowCustomer = ds.Tables"Custoemrs".Rows.Find("ANTON");if(rowCustomer = null)/沒有查找客戶elserowCustomer.BeginEdit();rowCustomer"Co mp anyName" ="NewCo mp anyName"rowCustomer"ContactName" - 'NewContactName"rowCustomer.EndEdit();/null表示不修改該列
11、的數(shù)據(jù)obejct aCustomer -null,"NewCom panyName","NewContactName",nullDataRow rowCustomer;rowCustomer - ds.Tables"Customers".Rows.Find("ALFKI");rowCustomer.ltemArray - aCustomer; 處理DataRow的空值/查看是否為空DataRow rowCustomer;rowCustomer - ds.Tables"Customers".Ro
12、ws.Find("ALFKI");if(rowCustomer.lsNull(" Phone")Console.WriteLine("It""s Null");elseConsole.WriteLine("It""s not Null");/賦予空值 rowCustomer" Phone" - DBNull.Value; 刪除DataRowDataRow rowCustomer;rowCustomer - ds.Tables"Customers&
13、quot;.Rows.Find("ALFKI");rowCustomer.Delete(); 清除DataRowDataRow rowCustomer - ds.Tables"Customers".Rows.Find("ALFKI");rowCustomer.ItemArray - aCustomer;da.Tables"Customers".Remove(rowCustomer);或者ds.Tables"Customers".RemoveAt(intlndex); 使用 DataRow.Row
14、State 屬性:Unchanged,Detached,Added,Modified,Deletedp rivate void DemonstrateRowState()/ Run a function to create a DataTable with one column.DataTable myTable - MakeTable();DataRow myRow;/ Create a new DataRow.myRow - myTable.NewRow();/ Detached row.Console.WriteLine("New Row " + myRow.RowS
15、tate);myTable.Rows.Add(myRow);/ New row.Console.WriteLine("AddRow " + myRow.RowState); myTable.Acce ptChanges();/ Unchanged row.Console.WriteLine("Acce ptChanges " + myRow.RowState);myRow"FirstName" = "Scott"/ Modified row.Console.WriteLine("Modified &quo
16、t; + myRow.RowState);myRow.Delete();/ Deleted row.Console.WriteLine("Deleted " + myRow.RowState); 檢查DataRow中的掛起更改DataRow rowCustomer;rowCustomer = ds.Tables"Customers".Rows.Find("ALFKI");rowCustomer"Co mp anyName" = "NewCo mp anyName"string strNewCo
17、mp anyName,strOldCo mp anyName;Console.WriteLine(rowCustomer"Co mp anyName",DataRowVersion.Current);Console.WriteLine(rowCustomer"Co mp anyName",DataRowVersion.Original); 遍歷DataSetforeach(DataTable dt in dataSet.Tables)foreach(DataRow dr in dt.Rows)foreach(DataColumn dc in dr.Tab
18、le.Columns)Console.WriteLine(drdc);三、屬性方法事件介紹1、DataSet 屬性CaseSensitive:用于控制DataTable中的字符串比較是否區(qū)分大小寫。"NewDataSet"。如果將DataSetName :當(dāng)前DataSet的名稱。如果不指定,則該屬性值設(shè)置為DataSet內(nèi)容寫入 XML文件,DataSetName是XML文件的根節(jié)點(diǎn)名稱。DesignMode :如果在設(shè)計(jì)時(shí)使用組件中的DataSet, DesignMode返回True,否則返回 False。HasErrors :表示DataSet中的DataRow對(duì)象是
19、否包含錯(cuò)誤。如果將一批更改提交給數(shù)據(jù)庫并將DataAda pter對(duì)象的 Contin ueU pdate On Error屬性設(shè)置為 True,則在提交更改后必須檢查DataSet的HasErrors屬性,以確定是否有更新失敗。NameSpace和Prefix :指定XML命名空間和前綴Relations :返回一個(gè) DataRelationCollection 對(duì)象。Tables:檢查現(xiàn)有的DataTable對(duì)象。通過索引訪問 DataTable有更好的性能。 方法AcceptChanges 和 RejectChanges :接受或放棄 DataSet中所有掛起更改。調(diào)用 AcceptCh
20、anges時(shí), RowState屬性值為 Added或Modified的所有行的 RowState屬性都將被設(shè)置為 Un Cha nged.任何標(biāo)記 為Deleted的DataRow對(duì)象將從 DataSet中刪除。調(diào)用RejectChanges時(shí),任何標(biāo)記為 Added的DataRow 對(duì)象將會(huì)被從 DataSet中刪除,其他修改過的DatRow對(duì)象將返回前一狀態(tài)。Clear:清除DataSet中所有DataRow對(duì)象。該方法比釋放一個(gè)DataSet然后再創(chuàng)建一個(gè)相同結(jié)構(gòu)的新DataSet要快。DataSet。使用Clo ne和Copy:使用Co py方法會(huì)創(chuàng)建與原 DataSet具有相同結(jié)構(gòu)
21、和相同行的新 Clone方法會(huì)創(chuàng)建具有相同結(jié)構(gòu)的新DataSet,但不包含任何行。GetChanges:返回與原 DataSet對(duì)象具有相同結(jié)構(gòu)的新 DataSet,并且還包含原 DataSet中所有掛 起更改的行。GetXml和GetXmlSchema :使用GetXml方法得到由DataSet的內(nèi)容與她的架構(gòu)信息轉(zhuǎn)換為XML格式后的字符串。如果只希望返回架構(gòu)信息,可以使用GetXmlSchema。DataRow 對(duì)象。HasChange :表示DataSet中是否包含掛起更改的Merge :從另一個(gè) DataSet、DataTable或現(xiàn)有DataSet中的一組 DataRow對(duì)象載入數(shù)據(jù)
22、。ReadXml 和 WriteXml :使用 ReadXml 方法從文件、TextReader、數(shù)據(jù)流或者 XmlReader 中將 XML 數(shù)據(jù)載入DataSet中。Reset:將DataSet返回為未初始化狀態(tài)。如果想放棄現(xiàn)有DataSet并且開始處理新的 DataSet,使用Reset方法比創(chuàng)建一個(gè)DataSet的新實(shí)例好。 事件MergeFailed :在DataSet的Merge方法發(fā)生一個(gè)異常時(shí)觸發(fā)。2、DataTable 屬性 方法 事件ColumnChanged :在列的內(nèi)容被改變之后觸發(fā)ColumnChangding :在列的內(nèi)容被改變之前觸發(fā)RowCha nged,Row
23、Cha ngin g,RowDeleted,RowDeleti ng。3、DataColumn 屬性4、DataRow 屬性HasError :確定行是否包含錯(cuò)誤。Item :通過指定行的列數(shù),列的名稱或DataColumn對(duì)象本身,訪問列的內(nèi)容。ItemArray :獲取或設(shè)置行中所有列的值。RowError :返回一個(gè)包含行錯(cuò)誤信息的字符串。RowState :返回DataRowState枚舉中的值來表示行的當(dāng)前狀態(tài)。Table:返回 DataRow 對(duì)象所在的 DataTable。 方法AcceptChanges和RejectChanges :提交和放棄掛起更改。BeginEdit、Ca
24、ncelEdit、EndEditClearErrors :清除DataRow中所有的錯(cuò)誤。對(duì)象的Delete方法時(shí),ADO.NET 來刪除其在數(shù)據(jù)庫中對(duì)應(yīng)的行。如果希望徹底刪除 DataRow,以使用DataRowCollection對(duì)象的 dataset ds =new datast(); datatable tel =new datatable(); ds.tables.add(tel);string code=ds.tables"te門.rows00.tostnng();Delete:Delete方法實(shí)際上并不從DataRow表的Row集合中刪除該 DataRow。當(dāng)調(diào)用 Da
25、taRow將該行標(biāo)記為刪除,之后調(diào)用SqlDataAda pter對(duì)象的Up date方法 可以調(diào)用Delete方法,接著再調(diào)用它的 AccepteChanges方法,還可Remove方法完成相同的任務(wù)。淺談DataSet的用法DataSet是ADO.NET開發(fā)人員為方便數(shù)據(jù)處理開發(fā)出來的,是數(shù)據(jù)的集合,是為解決DataReader的缺陷設(shè)計(jì)的,DataReader數(shù)據(jù)處理速度快,但它是只讀的,而且一旦移到下一行,就不能查看上 一行的數(shù)據(jù),DataSet則可以自由移動(dòng)指針。DataSet的數(shù)據(jù)是與數(shù)據(jù)庫斷開的。DataSet還可用于多層應(yīng)用程序中,如果應(yīng)用程序運(yùn)行在中間層的業(yè)務(wù)對(duì)象中來訪問數(shù)據(jù)
26、庫,則業(yè)務(wù)對(duì)象需將脫機(jī)數(shù)據(jù) 結(jié)構(gòu)傳遞給客戶應(yīng)用程序。DataSet的功能:瀏覽、排序、搜索、過濾、處理分級(jí)數(shù)據(jù)、緩存更改等。還可以與XML數(shù)據(jù) 互換。DataSet中可包括多個(gè) DataTable,可將多個(gè)查詢結(jié)構(gòu)存到一個(gè)DataSet中,方便操作,而DataTable中又包括多個(gè) DataRow、DataColumn,可通過這些 DataRow、DataColumn來查看、操作其中的數(shù) 據(jù),而需將操作結(jié)果返回給數(shù)據(jù)庫的話,則可以調(diào)用DataAda pter的Up date方法。DataSet的操作:DataSet ds=new DataSet();DataTable dt=new DataT
27、able("newTable");ds.Tables.Add(dt);DataSet ds=new DataSet();DataTable dt=ds.Tables.Add("newTable");上述兩種方法都可以在DataSet中添加一個(gè) DataTable,看需要而進(jìn)行選擇。添加DataTable后,需向其中添加行和列。DataSet ds=new DataSet();DataTable dt=ds.Tables.Add("newTables");DataColumn col=dt.Columns.Add("newCo
28、lumn",ty peof(int); col.AllowDBNull=false;col.MaxLength=4;col.Unique=true;上述代碼向DataSet中的DataTable中添加名為” newColumn",類型為int且不為空,最大長度為4和唯 一性為真的列。dt. PrimaryKey=new DataColumndt.Columns"ID"這段代碼是繼續(xù)上面代碼的,為一個(gè)DataTable中添加一個(gè)主鍵列,主鍵列是一個(gè)數(shù)據(jù)組,如有多個(gè)主鍵, 只需在數(shù)組中添加一個(gè)列即可。如下:dt. PnmaryKey=newDataColum
29、nsdt.Columns"OrderlD",dt.Columns "P roductID" 添加外鍵:ForeignKeyConstraint fk;fk=newForeignKeyConstraint(ds.Tables"Customers".Columns"CustomerlD",ds.Tab les"Orders".Columns"CustomerlD");ds.Tables"Orders".Constraints.Add(fk);上述代碼假如已經(jīng)為
30、 Cusomers表和Orders創(chuàng)建了主鍵,此句為添加外鍵約束。 上述是根據(jù) Customers表和Orders表的CustomerID來創(chuàng)建約束。 下面介紹修改 DataRow中的內(nèi)容:DataRow dr=ds.Tables"Customer".Rows.Find("ANTON");if(dr=null)elsedr.BeginEdit();dr"Com panyName"="newValue"dr"ContactName"="newValue2"dr.EndEditO
31、;上面代碼通過 Row集合的Find方法來在DataTable中的行進(jìn)行定位,找到"ANTOM行,再修改"ANTON行中CompanyNam列和ContactName列的值。通過 BeginEdit和EndEdit來緩存對(duì)行的修改,還可調(diào)用CancelEdit為取消修改。判斷某列是否為空值:DataRow dr=ds.Tables"Customers".Rows.Find("aaa");if(dr.lsNull("ContactName");elsedr"ContactName"=DBNull.
32、Value這里判斷ContactName列是否為空,如果不是則為其賦空值,呵,很無厘頭的做法,這里只為演示為列賦 空值的做法。刪除 DataRow:有兩種方法可以刪除 DataRow,Delete方法和 Remove方法和 RemoveAt方法。其區(qū)別是 Delete 方法實(shí)際上不是從 DataTable中刪除掉一行,而是將其標(biāo)志為刪除,僅僅是做個(gè)記號(hào),而Remove方法則是真正的從 DataRow中刪除一行,RemoveAt方法是根本行的索引來刪除。列:DataRow dr=ds.Tables"table".Rows.Find("a");ds.Tabl
33、es"table".Remove(dr);ds.Tables"table".Remove(index);dr為"a"所在的行,查出后將其刪除,index為"a"所在的索引號(hào)。關(guān)于 DataSet中的其用法,參照 MSDNDataRow dr=ds.Tables"Customers".Rows.Find("aaa");if(dr.IsNull("ContactName");elsedr"ContactName"=DBNull.Value這
34、里判斷ContactName列是否為空,如果不是則為其賦空值,呵,很無厘頭的做法,這里只為演示為列賦空值的做法。using System.Data;using System;using System.Windows.Forms;class DataTstatic DataTable dt;/ = new DataTable();static DataSet ds;static void method1()dt = new DataTable("Name");ds = new DataSet();dt.Columns.Add(new DataColumn("ID", typ eof(lnt32);dt.Columns.Add(new DataColumn("Name", ty peof(string);dt.Columns.Add(new DataColumn("Sex", ty peof(string);dt.Columns.Add(new DataColumn("Addr", typ eof(string); static void add(int id,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版離婚協(xié)議范例及注意事項(xiàng)
- 二零二五版租賃場地合同書安全條款
- 進(jìn)修人員協(xié)議書范文二零二五年
- 租賃大連房屋合同
- 回火胎圈鋼絲企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 卷筆刀企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 普通碳素鋼電線套管企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報(bào)告
- 電動(dòng)代步車企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 自動(dòng)充氣救生圈企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 矯平機(jī)企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報(bào)告
- SL631水利水電工程單元工程施工質(zhì)量驗(yàn)收標(biāo)準(zhǔn)第4部分:堤防與河道整治工程
- 2025年4月版安全法律法規(guī)標(biāo)準(zhǔn)文件清單
- 品管圈PDCA改善案例-降低住院患者跌倒發(fā)生率
- 人工智能引論知到智慧樹章節(jié)測(cè)試課后答案2024年秋浙江大學(xué)
- 《電工電子技術(shù)基礎(chǔ)》高職全套教學(xué)課件
- JTG F90-2015 公路工程施工安全技術(shù)規(guī)范
- 重癥醫(yī)學(xué)科各項(xiàng)規(guī)章制度匯編
- 平面位置(軸線)測(cè)量記錄表
- 生物制造國內(nèi)外狀況課件
- 處分通報(bào)范文員工處分通報(bào)范文4篇
- 罰沒收繳物品處理管理流程圖
評(píng)論
0/150
提交評(píng)論