ADO.NET知識(shí)點(diǎn)筆記-創(chuàng)新互聯(lián)

1 DataColumn 的DataType可以是任一數(shù)據(jù)類型,包括自義定類和結(jié)構(gòu).

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、做網(wǎng)站、市中網(wǎng)絡(luò)推廣、成都小程序開發(fā)、市中網(wǎng)絡(luò)營銷、市中企業(yè)策劃、市中品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供市中建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:muchs.cn
DataTable dt = new DataTable("Product");
            dt.Columns.Add("ProductId",typeof(int));
            dt.Columns.Add("ProductProperty", typeof(ProductProperty));

            DataRow r1 = dt.NewRow();
            r1["ProductId"] = 1;
            r1["ProductProperty"] = new ProductProperty() { ProductionDate = DateTime.Now, Desc = "牛奶糖" };

            dt.Rows.Add(r1);

            foreach(DataRow dr in dt.Rows)
            {
                Console.WriteLine("productId {0};ProductionDate:{1};Desc:{2};",
                    dr["ProductId"].ToString(),
                    (dr["ProductProperty"] as ProductProperty).ProductionDate.ToString(),
                    (dr["ProductProperty"] as ProductProperty).Desc);
            }

2 Unique屬性標(biāo)記為True 的DataColumn 不請(qǐng)?jiān)试S有NULL值.

3 判斷DataRow中某個(gè)列是否已經(jīng)修改

//oneRow.DataRowState=DataRowState.Changed,否則可能沒有Original版本
if(oneRow.HasVersion(DataRowVersion.Proposed))
{
    if(oneRow["Salary",DataRowVersion.Original]!=oneRow["Salary",DataRowVersion.Proposed])
    {
        //salary field has changed
    }
}

4 使用DataRow.BeginEdit() DataRow.EndEdit() 延遲數(shù)據(jù)驗(yàn)證,同時(shí)減少RowChanged事件觸發(fā)次數(shù)

oneRow.BeginEdit();
oneRow["ProductName"]="ColaVeryGood";//ProductName MaxLength 為10
oneRow["UnitPrice"]=12.4;//UnitPrice 大值為 10.0
oneRow.EndEdit();//直到此時(shí)才發(fā)生數(shù)據(jù)驗(yàn)證異常,如果沒有異常,則發(fā)生RowChanged事件,而不會(huì)觸發(fā)兩次事件.

5 基于驗(yàn)證的錯(cuò)誤

利用DataColumnChanging,DataRowChanging,可以修改的數(shù)據(jù)進(jìn)行驗(yàn)證,防止不符合驗(yàn)證程序的數(shù)據(jù)輸入到列字段或提示出數(shù)據(jù)不合法.

private void app_ColumnChanging(object sender,DataColumnChangeEventArgs e)
{
    if(e.Column.ColumnName=="Age")
    {
        if((int)e.ProposedValue>120)
            e.Row.SetColumnError(e.Column,"Human can't live that long");
    }   
}

6 列級(jí)別的錯(cuò)誤

public void ShowFirstRowError(DataRow row)
{
    string errorText = "No error!";
    DataColumn[] errorColumns = row.GetColumnsInError();
    if(errorColumns.Count>0)
    {
        errorText= row.GetColumnError(errorColumns[0]);
    } 
    else if(row.RowError.Length>0)
    {
        errorText = row.RowError;        
    }
    // show errorText
}

7 按主鍵搜索行

DataRow matchRow = someTable.Rows.Find(searchValue);//single-part key
DataRow matchRow = someTable.Rows.Find(new object[]{value1,value2})//multi-Part key;
//如果未找到行,返回null

8 用搜索條件選擇行及排序

//匹配字條串時(shí)區(qū)分大小寫
//someTable.CaseSensitive=True;//默認(rèn)不區(qū)分大小寫
DataRow[] matchRows = someTable.Select(filterCriteria,sortRules);
//filterCriteria 過濾表達(dá)式參考 DataColumn.Expression 很強(qiáng)大
//sortRules OrderDate DESC,CustomerName ASC,ASC是默認(rèn)排序,可省略.

9 產(chǎn)生單一聚合

產(chǎn)生單一聚合是指使用聚合方法計(jì)算某個(gè)表的字段,但不作為一個(gè)表的計(jì)算列,例如:

decimal averageSalary = (decimal)employeeTable.Compute("Avg(Salary)",filterExpression);
//其他"Avg(Salary)"是計(jì)算表達(dá)式,如計(jì)算列的計(jì)算表達(dá)式一樣
//filterExpression 是過濾表達(dá)式,和DataTable.Selete()方法的過濾表達(dá)式一樣.

10 DataView

DataView是DataTable的視圖,是對(duì)表的列的一個(gè)索引,并不直接包含具體的列.被包含的列仍然屬于原來的DataTable.

DataView 有三個(gè)重要的屬性.

RowFilter:列過濾表達(dá)式,與DataTable的表達(dá)式一樣

Sort:排序表達(dá)式

RowStateFilter:根據(jù)DataRow的 RowState屬性過濾列,并且可以指定要顯示的數(shù)據(jù)的版本.比如DataRowViewState.ModifiedOriginal 顯示RowState為Changed的列的原始版本的數(shù)據(jù).

每次設(shè)置三個(gè)屬性之一都會(huì)重建其對(duì)底層DataTable的索引,為減少重建次數(shù),應(yīng)該盡量在 DataView()構(gòu)造方法中設(shè)置好這三個(gè)屬性.

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

本文名稱:ADO.NET知識(shí)點(diǎn)筆記-創(chuàng)新互聯(lián)
標(biāo)題來源:http://muchs.cn/article28/deigjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、建站公司、外貿(mào)建站、營銷型網(wǎng)站建設(shè)微信公眾號(hào)、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)