注意ADO.NET中容易混淆的概念_.Net教程
推薦:解析asp.net開發(fā)與web標(biāo)準(zhǔn)的沖突問題Visual Studio .net從2003到現(xiàn)在的2008,一路走來慢慢強(qiáng)大從以前的vs2003能自動改亂你的html代碼到現(xiàn)在在vs2008中都能直接對html代碼進(jìn)行w3c標(biāo)準(zhǔn)驗證并提示了,非常不易。 論壇中也經(jīng)常有從事.net開發(fā)的新手朋友問一些ASP.net開發(fā)過程中與Web標(biāo)準(zhǔn)之間的沖突
一、DataTable
DataTable表示內(nèi)存中數(shù)據(jù)的一個表,它完全是在內(nèi)存中的一個獨(dú)立存在,包含了這張表的全部信息。DataTable可以是從通過連接從數(shù)據(jù)庫中讀取出來形成的一個表,一旦將內(nèi)容讀到DataTable中,此DataTable就可以跟數(shù)據(jù)源斷開而獨(dú)立存在;也可以是完全由程序自己通過代碼來建立的一個表。
◆ DataColumn
一個表是由行和列組成的一個兩維的結(jié)構(gòu)。表的結(jié)構(gòu)是由DataColumn對象的集合組成,DataColumn對象集合可由DataTable.Columns屬性中能獲取到,通過定義每一列的數(shù)據(jù)類型來確定表的架構(gòu),類似數(shù)據(jù)庫中定義表。定義完表的結(jié)構(gòu)就可以根據(jù)結(jié)構(gòu)來生成DataRow,用DataTable.NewRow()方法來生成此DataTable結(jié)構(gòu)的新行。
一個DataTable是由DataRow的集合組成的,DataRow的集合這個可以由DataTable.Rows屬性來訪問。
DataTable還可以通過現(xiàn)有的列用Expression屬性的表達(dá)式創(chuàng)建一些列。
1、創(chuàng)建計算出的列
比如:已經(jīng)有了一個表結(jié)構(gòu),表中有一個DataColumn的集合,其中有一個叫UnitPrice的列,你可以新建一個DataColumn,設(shè)置好ColumnName,再設(shè)置此列的表達(dá)式,DataColumn.Expression="UnitPrice * 0.086",這個列的值就是名字為UnitPrice的列計算出來的,在創(chuàng)建表達(dá)式時,使用ColumnName屬性來引用列。
2、第二個用途是創(chuàng)建聚合列
聚合列聚合通常沿著關(guān)系執(zhí)行(有關(guān)關(guān)系的描述見下面DataRelation部分),如果order表有名為detail 的子表,兩個表之間通過order.orderid和detail.orderid兩個列建立一個關(guān)系DataRelation對象名為“order2detail”,在主表order中就可以建立一個聚合列,將計算每個order在detail表中含有的所有item的價格的和:DataColumn.Expression = “sum(child(order2detail).price)",child(order2detail)表示通過關(guān)系order2detail聯(lián)系到的子表,child(order2detail).price就表示子表的price列。
◆ DataRow
DataRow對象沒有直接在代碼中使用的構(gòu)造函數(shù),一般是從具有一定結(jié)構(gòu)的DataTable用NewRow()方法來新建一個DataRow對象。一個DataRow根據(jù)其是獨(dú)立的,還是屬于某個DataTable,是否修改過,是否被DataTable刪除等等不同的情況有不同的狀態(tài),由DataRow.RowState屬性公開,如下表:
成員名稱 說明
Added該行已添加到DataRowCollection中,AcceptChanges 尚未調(diào)用。Deleted該行已通過DataRow的Delete方法被刪除。
Deleted 該行已通過DataRow的Delete方法被刪除。
Detached 該行已被創(chuàng)建,但不屬于任何DataRowCollection。DataRow 在以下情況下立即處于此狀態(tài):創(chuàng)建之后添加到集合中之前;或從集合中移除之后。
Modified 該行已被修改,AcceptChanges 尚未調(diào)用。
Unchanged 該行自上次調(diào)用 AcceptChanges 以來尚未更改。
一個DataRow對象剛被創(chuàng)建之后其狀態(tài)是Detached,是孤立的一個存在,所以建立了DataRow之后在DataRow中的單元填充了數(shù)據(jù)后還要通過DataTable.Rows.Add(DataRow)方法將此DataRow添加到DataTable,DataRow添加到DataTable后, 這個DataRow的狀態(tài)就轉(zhuǎn)變?yōu)锳dded。當(dāng)修改了這個DataRow后,這個DataRow狀態(tài)轉(zhuǎn)為Modified,當(dāng)用DataRow.Delete()方法刪除DataRow后,DataRow狀態(tài)將轉(zhuǎn)為Deleted,不過此行還存在在DataTable中的,只是狀態(tài)改變了,這時用DataTable.Rows.Count查看行數(shù),跟刪除前是一樣的。只有在調(diào)用了DataTable.Remove(DataRow)方法后,此DataRow才被從DataTable移除,狀態(tài)也回復(fù)到Detached孤立狀態(tài)。
一旦調(diào)用了DataTable.AcceptChanges()方法后,所有的行將根據(jù)不同的狀態(tài)做不同的處理,Added、Modified、Unchanged將保留當(dāng)前值,Deleted的行將從DataTable中移除,最后所有的行的狀態(tài)都置為Unchanged。當(dāng)DataTable是從DataAdapter.Fill(
分享:ASP.NET程序設(shè)計的10大技巧1. 在使用Visual Studio .NET時,除直接或非引用的對象外,不要使用缺省的名字 .NET帶來的好處之一是所有的源代碼和配置文件都是純文本文件,能夠使用Notepad或WordPad等任意的文本編輯器進(jìn)行編輯。如果不愿意,我們并非一定要使用Visual Studio .NET作為集
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實例(可帶附件)
- js實現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實現(xiàn)
- Asp.Net 無刷新文件上傳并顯示進(jìn)度條的實現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(連接字符串的配置及獲取)
- asp.net頁面?zhèn)髦禍y試實例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實現(xiàn)分頁示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- aspx是什么格式 ASPX文件怎么打開
- 將GridView內(nèi)容導(dǎo)出到Excel或Word中
- ASP.NET2.0服務(wù)器控件之創(chuàng)建復(fù)雜屬性
- ASP.NET MVC中解析淘寶網(wǎng)頁出現(xiàn)亂碼問題的解決方法
- 關(guān)于IronPython和C#執(zhí)行速度對比
- 淺談.NET 3.5 SP1中的JIT增強(qiáng)
- Windows CE.Net下矩陣鍵盤開發(fā)設(shè)計詳解
- 關(guān)于利用C#遠(yuǎn)程存取Access數(shù)據(jù)庫
- 解決在Web.config或App.config中添加自定義配置的方法詳解
- ASP.NET筆記之頁面跳轉(zhuǎn)、調(diào)試、form表單、viewstate、cookie的使用說明
- 相關(guān)鏈接:
- 教程說明:
.Net教程-注意ADO.NET中容易混淆的概念
。