DataSet用法詳細內(nèi)容_第1頁
DataSet用法詳細內(nèi)容_第2頁
DataSet用法詳細內(nèi)容_第3頁
DataSet用法詳細內(nèi)容_第4頁
DataSet用法詳細內(nèi)容_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

C#:DataSet用法詳解第頁DataSet用法詳細一、特點介紹1、處理脫機數(shù)據(jù),在多層應(yīng)用程序中很有用。2、可以在任何時候查看DataSet中任意行的內(nèi)容,允許修改查詢結(jié)果的方法。3、處理分級數(shù)據(jù)4、緩存更改5、XML的完整性:DataSet對象和XML文檔幾乎是可互換的。二、使用介紹1、創(chuàng)建DataSet對象:DataSetds=newDataSet("DataSetName");2、查看調(diào)用SqlDataAdapter.Fill創(chuàng)建的結(jié)構(gòu)da.Fill(ds,"Orders");DataTabletbl=ds.Table[0];foreach(DataColumncolintbl.Columns)Console.WriteLine(col.ColumnName);3、查看SqlDataAdapter返回的數(shù)據(jù)①DataRow對象DataTabletbl=ds.Table[0];DataRowrow=tbl.Row[0];Console.WriteLine(ros["OrderID"]);②檢查存儲在DataRow中的數(shù)據(jù)DataTabletbl=row.Table;foreach(DataColumncolintbl.Columns)Console.WriteLine(row[col]);③檢查DatTable中的DataRow對象foreach(DataRowrowintbl.Rows)DisplayRow(row);4、校驗DataSet中的數(shù)據(jù)①校驗DataColumn的屬性:ReadOnly,AllowDBNull,MaxLength,Unique②DataTable對象的Constrains集合:UiqueConstraints,Primarykey,ForeignkeyConstraints通常不必刻意去創(chuàng)建ForeignkeyConstraints,因為當在DataSet的兩個DataTable對象之間創(chuàng)建關(guān)系時會創(chuàng)建一個。③用SqlDataAdapter.Fill模式來檢索模式信息5、編寫代碼創(chuàng)建DataTable對象①創(chuàng)建DataTable對象:DataTabletbl=newDataTable("TableName");②將DataTable添加到DataSet對象的Table集合DataSetds=newDataSet();DataTabletbl=newDataTable("Customers");ds.Tables.Add(tbl);DataSetds=newDataSet();DataTabletbl=ds.Tables.Add("Customers");DataTable對象只能存在于至多一個DataSet對象中。如果希望將DataTable添加到多個DataSet中,就必須使用Copy方法或Clone方法。Copy方法創(chuàng)建一個與原DataTable結(jié)構(gòu)相同并且包含相同行的新DataTable;Clone方法創(chuàng)建一個與原DataTable結(jié)構(gòu)相同,但沒有包含任何行的新DataTable。③為DataTable添加列DataTabletbl=ds.Tables.Add("Orders");DataColumncol=tbl.Columns.Add("OrderID",typeof(int));col.AllowDBNull=false;col.MaxLength=5;col.Unique=true;tbl.PrimaryKey=newDataColumn[]{tbl.Columns["CustomersID"]};當設(shè)置主鍵時,AllowDBNull自動設(shè)置為False;④處理自動增量列DataSetds=newDataSet();DataTabletbl=ds.Tables.Add("Orders");DataColumncol=tbl.Columns.Add("OrderID",typeof(int));col.AutoIncrement=true;col.AutoIncrementSeed=-1;col.AutoIncrementStep=-1;col.ReadOnly=true;⑤添加基于表達式的列tbl.Columns.Add("ItemTotal",typeof(Decimal),"Quantity*UnitPrice");6、修改DataTable內(nèi)容①添加新DataRowDataRowrow=ds.Tables["Customers"].NewRow();row["CustomerID"]="ALFKI";ds.Tables["Customers"].Rows.Add(row);object[]aValues={"ALFKI","Alfreds","Anders","030-22222"};da.Tables["Customers"].LoadDataRow(aValues,false);②修改當前行修改行的內(nèi)容逼供內(nèi)不會自動修改數(shù)據(jù)庫中相應(yīng)的內(nèi)容,對行所做的修改被視為是隨后將使用SqlDataAdapter對象來提交交給數(shù)據(jù)庫的待定的更改。DataRowrowCustomer;rowCustomer=ds.Tables["Custoemrs"].Rows.Find("ANTON");if(rowCustomer==null)//沒有查找客戶else{rowCustomer["CompanyName"]="NewCompanyName";rowCustomer["ContactName"]="NewContactName";}//推薦使用這種方式DataRowrowCustomer;rowCustomer=ds.Tables["Custoemrs"].Rows.Find("ANTON");if(rowCustomer==null)Clone和Copy:使用Copy方法會創(chuàng)建與原DataSet具有相同結(jié)構(gòu)和相同行的新DataSet。使用Clone方法會創(chuàng)建具有相同結(jié)構(gòu)的新DataSet,但不包含任何行。GetChanges:返回與原DataSet對象具有相同結(jié)構(gòu)的新DataSet,并且還包含原DataSet中所有掛起更改的行。GetXml和GetXmlSchema:使用GetXml方法得到由DataSet的內(nèi)容與她的架構(gòu)信息轉(zhuǎn)換為XML格式后的字符串。如果只希望返回架構(gòu)信息,可以使用GetXmlSchema。HasChange:表示DataSet中是否包含掛起更改的DataRow對象。Merge:從另一個DataSet、DataTable或現(xiàn)有DataSet中的一組DataRow對象載入數(shù)據(jù)。ReadXml和WriteXml:使用ReadXml方法從文件、TextReader、數(shù)據(jù)流或者XmlReader中將XML數(shù)據(jù)載入DataSet中。Reset:將DataSet返回為未初始化狀態(tài)。如果想放棄現(xiàn)有DataSet并且開始處理新的DataSet,使用Reset方法比創(chuàng)建一個DataSet的新實例好。③事件MergeFailed:在DataSet的Merge方法發(fā)生一個異常時觸發(fā)。2、DataTable①屬性②方法③事件ColumnChanged:在列的內(nèi)容被改變之后觸發(fā)ColumnChangding:在列的內(nèi)容被改變之前觸發(fā)RowChanged,RowChanging,RowDeleted,RowDeleting。3、DataColumn①屬性4、DataRow①屬性HasError:確定行是否包含錯誤。Item:通過指定行的列數(shù),列的名稱或DataColumn對象本身,訪問列的內(nèi)容。ItemArray:獲取或設(shè)置行中所有列的值。RowError:返回一個包含行錯誤信息的字符串。RowState:返回DataRowState枚舉中的值來表示行的當前狀態(tài)。Table:返回DataRow對象所在的DataTable。②方法AcceptChanges和RejectChanges:提交和放棄掛起更改。BeginEdit、CancelEdit、EndEditClearErrors:清除DataRow中所有的錯誤。Delete:Delete方法實際上并不從DataRow表的Row集合中刪除該DataRow。當調(diào)用DataRow對象的Delete方法時,ADO.NET將該行標記為刪除,之后調(diào)用SqlDataAdapter對象的Update方法來刪除其在數(shù)據(jù)庫中對應(yīng)的行。如果希望徹底刪除DataRow,可以調(diào)用Delete方法,接著再調(diào)用它的AccepteChanges方法,還可以使用DataRowCollection對象的Remove方法完成相同的任務(wù)。datasetds=newdatast();datatabletel=newdatatable();ds..tables.add(tel);stringcode=ds.tables["tel"].rows[0][0].tostring();淺談DataSet的用法DataSet是ADO.NET開發(fā)人員為方便數(shù)據(jù)處理開發(fā)出來的,是數(shù)據(jù)的集合,是為解決DataReader的缺陷設(shè)計的,DataReader數(shù)據(jù)處理速度快,但它是只讀的,而且一旦移到下一行,就不能查看上一行的數(shù)據(jù),DataSet則可以自由移動指針。DataSet的數(shù)據(jù)是與數(shù)據(jù)庫斷開的。DataSet還可用于多層應(yīng)用程序中,如果應(yīng)用程序運行在中間層的業(yè)務(wù)對象中來訪問數(shù)據(jù)庫,則業(yè)務(wù)對象需將脫機數(shù)據(jù)結(jié)構(gòu)傳遞給客戶應(yīng)用程序。DataSet的功能:瀏覽、排序、搜索、過濾、處理分級數(shù)據(jù)、緩存更改等。還可以與XML數(shù)據(jù)互換。DataSet中可包括多個DataTable,可將多個查詢結(jié)構(gòu)存到一個DataSet中,方便操作,而DataTable中又包括多個DataRow、DataColumn,可通過這些DataRow、DataColumn來查看、操作其中的數(shù)據(jù),而需將操作結(jié)果返回給數(shù)據(jù)庫的話,則可以調(diào)用DataAdapter的Update方法。DataSet的操作:DataSetds=newDataSet();DataTabledt=newDataTable("newTable");ds.Tables.Add(dt);DataSetds=newDataSet();DataTabledt=ds.Tables.Add("newTable");上述兩種方法都可以在DataSet中添加一個DataTable,看需要而進行選擇。添加DataTable后,需向其中添加行和列。DataSetds=newDataSet();DataTabledt=ds.Tables.Add("newTables");DataColumncol=dt.Columns.Add("newColumn",typeof(int));col.AllowDBNull=false;col.MaxLength=4;col.Unique=true;上述代碼向DataSet中的DataTable中添加名為”newColumn”,類型為int且不為空,最大長度為4和唯一性為真的列。dt.PrimaryKey=newDataColumn[]{dt.Columns["ID"]}這段代碼是繼續(xù)上面代碼的,為一個DataTable中添加一個主鍵列,主鍵列是一個數(shù)據(jù)組,如有多個主鍵,只需在數(shù)組中添加一個列即可。如下:dt.PrimaryKey=newDataColumns[]{dt.Columns["OrderID"],dt.Columns["ProductID"]}添加外鍵:ForeignKeyConstraintfk;fk=newForeignKeyConstraint(ds.Tables["Customers"].Columns["CustomerID"],ds.Tables["Orders"].Columns["CustomerID"]);ds.Tables["Orders"].Constraints.Add(fk);上述代碼假如已經(jīng)為Cusomers表和Orders創(chuàng)建了主鍵,此句為添加外鍵約束。上述是根據(jù)Customers表和Orders表的CustomerID來創(chuàng)建約束。下面介紹修改DataRow中的內(nèi)容:DataRowdr=ds.Tables["Customer"].Rows.Find("ANTON");if(dr==null)else{dr.BeginEdit();dr["CompanyName"]="newValue";dr["ContactName"]="newValue2";dr.EndEdit();}上面代碼通過Row集合的Find方法來在DataTable中的行進行定位,找到"ANTON"行,再修改"ANTON"行中CompanyName列和ContactName列的值。通過BeginEdit和EndEdit來緩存對行的修改,還可調(diào)用CancelEdit為取消修改。判斷某列是否為空值:DataRowdr=ds.Tables["Customers"].Rows.Find("aaa");if(dr.IsNull("ContactName");..elsedr["ContactName"]=DBNull.Value這里判斷ContactName列是否為空,如果不是則為其賦空值,呵,很無厘頭的做法,這里只為演示為列賦空值的做法。刪除DataRow:有兩種方法可以刪除DataRow,Delete方法和Remove方法和RemoveAt方法。其區(qū)別是Delete方法實際上不是從DataTable中刪除掉一行,而是將其標志為刪除,僅僅是做個記號,而Remove方法則是真正的從DataRow中刪除一行,RemoveAt方法是根本行的索引來刪除。列:DataRowdr=ds.Tables["table"].Rows.Find("a");ds.Tables["table"].Remove(dr);或ds.Tables["table"].Remove(index);dr為"a"所在的行,查出后將其刪除,index為"a"所在的索引號。關(guān)于DataSet中的其用法,參照MSDNDataRowdr=ds.Tables["Customers"].Rows.Find("aaa");if(dr.IsNull("ContactName");..elsedr["ContactName"]=DBNull.Value這里判斷ContactName列是否為空,如果不是則為其賦空值,呵,很無厘頭的做法,這里只為演示為列賦空值的做法。usingSystem.Data;usingSystem;usingSystem.Windows.Forms;classDataT{staticDataTabledt;//=newDataTable();staticDataSetds;staticvoidmethod1(){dt=newDataTable("Name");ds=newDataSet();dt.Columns.Add(newDataColumn("ID",typeof(Int32)));dt.Columns.Add(newDataColumn("Name",typeof(string)));dt.Columns.Add(newDataColumn("Sex",typeof(string)));dt.Columns.Add(newDataColumn("Addr",typeof(string)));}staticvoidadd(intid,stringname,stringsex,stringaddr){DataRowdr=dt.NewRow();dr["id"]=id;dr["Name"]=name;dr["Sex"]=sex;dr["Addr"]=addr;dt.Rows.Add(dr);}staticvoidMain(){DataTDT=newDataT();method1();add(100,"Join","Male","北京");add(10

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論