小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

淺談DataSet

 liuqg 2006-03-13
淺談DataSet
作者:佚名 文章來(lái)源:不詳 點(diǎn)擊數(shù): 8106 更新時(shí)間:2005-10-12

   DataSet是ADO.NET開發(fā)人員為方便數(shù)據(jù)處理開發(fā)出來(lái)的,是數(shù)據(jù)的集合,是為解決DataReader的缺陷設(shè)計(jì)的,DataReader數(shù)據(jù)處理速度快,但它是只讀的, 而且一旦移到下一行,就不能查看上一行的數(shù)據(jù),DataSet則可以自由移動(dòng)指針。DataSet的數(shù)據(jù)是與數(shù)據(jù)庫(kù)斷開的。DataSet還可用于多層應(yīng)用程序中,如果應(yīng)用程序運(yùn)行在中間層的業(yè)務(wù)對(duì)象中來(lái)訪問(wèn)數(shù)據(jù)庫(kù),則業(yè)務(wù)對(duì)象需將脫機(jī)數(shù)據(jù)結(jié)構(gòu)傳遞給客戶應(yīng)用程序。

  DataSet的功能:瀏覽、排序、搜索、過(guò)濾、處理分級(jí)數(shù)據(jù)、緩存更改等。還可以與XML數(shù)據(jù)互換。DataSet中可包括多個(gè)DataTable,可將多個(gè)查詢結(jié)構(gòu)存到一個(gè)DataSet中,方便操作,而DataTable中又包括多個(gè)DataRow、DataColumn,可通過(guò)這些DataRow、DataColumn來(lái)查看、操作其中的數(shù)據(jù),而需將操作結(jié)果返回給數(shù)據(jù)庫(kù)的話,則可以調(diào)用DataAdapter的Update方法。

  DataSet的操作:

DataSet ds=new DataSet();
DataTable dt
=new DataTable("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("newColumn",typeof(int));
col.AllowDBNull
=false;
col.MaxLength
=4;
col.Unique
=true;

上述代碼向DataSet中的DataTable中添加名為”newColumn”,類型為int且不為空,最大長(zhǎng)度為4和唯一性為真的列。

dt.PrimaryKey=new DataColumn[]{dt.Columns["ID"]}

這段代碼是繼續(xù)上面代碼的,為一個(gè)DataTable中添加一個(gè)主鍵列,主鍵列是一個(gè)數(shù)據(jù)組,如有多個(gè)主鍵,只需在數(shù)組中添加一個(gè)列即可。如下:

dt.PrimaryKey=new DataColumns[]{dt.Columns["OrderID"],dt.Columns["ProductID"]}

添加外鍵:

ForeignKeyConstraint fk;
fk
=new ForeignKeyConstraint(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來(lái)創(chuàng)建約束。

下面介紹修改DataRow中的內(nèi)容:

DataRow dr=ds.Tables["Customer"].Rows.Find("ANTON");
if(dr==null)

else
{
dr.BeginEdit(); 
dr[
"CompanyName"]="newValue";
dr[
"ContactName"]="newValue2";
dr.EndEdit();
}

//上面代碼通過(guò)Row集合的Find方法來(lái)在DataTable中的行進(jìn)行定位,找到"ANTON"行,再修改"ANTON"行中CompanyName列和ContactName列的值。通過(guò)BeginEdit和EndEdit來(lái)緩存對(duì)行的修改,還可調(diào)用 CancelEdit為取消修改。

判斷某列是否為空值:

DataRow dr=ds.Tables["Customers"].Rows.Find("aaa");
if(dr.IsNull("ContactName");
 ..
else
 dr[
"ContactName"]=DBNull.Value
//這里判斷ContactName列是否為空,如果不是則為其賦空值,呵,很無(wú)厘頭的做法,這里只為演示為列賦空值的做法。

刪除DataRow:

有兩種方法可以刪除DataRow,Delete方法和Remove方法和RemoveAt方法。其區(qū)別是Delete方法實(shí)際上不是從DataTable中刪除掉一行,而是將其標(biāo)志為刪除,僅僅是做個(gè)記號(hào),而Remove方法則是真正的從DataRow中刪除一行,RemoveAt方法是根本行的索引來(lái)刪除。列:

DataRow dr=ds.Tables["table"].Rows.Find("a");
ds.Tables[
"table"].Remove(dr);

ds.Tables[
"table"].Remove(index);
//dr 為"a"所在的行,查出后將其刪除,index為 "a"所在的索引號(hào)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多