91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ADO.NET知識點筆記

發布時間:2020-04-26 21:43:51 來源:網絡 閱讀:703 作者:nbcwan 欄目:編程語言

1 DataColumn 的DataType可以是任一數據類型,包括自義定類和結構.

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屬性標記為True 的DataColumn 不請允許有NULL值.

3 判斷DataRow中某個列是否已經修改

//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() 延遲數據驗證,同時減少RowChanged事件觸發次數

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

5 基于驗證的錯誤

利用DataColumnChanging,DataRowChanging,可以修改的數據進行驗證,防止不符合驗證程序的數據輸入到列字段或提示出數據不合法.

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 列級別的錯誤

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 用搜索條件選擇行及排序

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

9 產生單一聚合

產生單一聚合是指使用聚合方法計算某個表的字段,但不作為一個表的計算列,例如:

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

10 DataView

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

DataView 有三個重要的屬性.

RowFilter:列過濾表達式,與DataTable的表達式一樣

Sort:排序表達式

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

每次設置三個屬性之一都會重建其對底層DataTable的索引,為減少重建次數,應該盡量在 DataView()構造方法中設置好這三個屬性.


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

依兰县| 龙海市| 大英县| 太白县| 辽中县| 元谋县| 武汉市| 门头沟区| 仁布县| 文成县| 香格里拉县| 高安市| 磐石市| 广州市| 区。| 井冈山市| 延津县| 神农架林区| 盱眙县| 华安县| 枝江市| 茌平县| 泽库县| 吴江市| 奉贤区| 扎囊县| 娄烦县| 延庆县| 绥德县| 永康市| 太仓市| 葵青区| 遵义县| 黎川县| 杭锦旗| 达孜县| 拜泉县| 左贡县| 曲阳县| 兰考县| 剑河县|