程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#的DataRow.ItemArray屬性詳解

C#的DataRow.ItemArray屬性詳解

編輯:關於C#

DataRow.ItemArray 屬性

通過一個數組來獲取或設置此行的所有值。

命名空間:System.Data

程序集:System.Data(在 system.data.dll 中)

代碼示例:

private void CreateRowsWithItemArray()  
{  
    // Make a DataTable using the function below.  
    DataTable dt = MakeTableWithAutoIncrement();  
    DataRow relation;  
    // Declare the array variable.  
    object [] rowArray = new object[2];  
    // Create 10 new rows and add to DataRowCollection.  
    for(int i = 0; i <10; i++)  
    {  
        rowArray[0]=null;  
        rowArray[1]= "item " + i;  
        relation = dt.NewRow();  
        relation.ItemArray = rowArray;  
        dt.Rows.Add(relation);  
    }  
    PrintTable(dt);  
}  
        
private DataTable MakeTableWithAutoIncrement()  
{  
    // Make a table with one AutoIncrement column.  
    DataTable table = new DataTable("table");  
    DataColumn idColumn = new DataColumn("id",   
        Type.GetType("System.Int32"));  
    idColumn.AutoIncrement = true;  
    idColumn.AutoIncrementSeed = 10;  
    table.Columns.Add(idColumn);  
       
    DataColumn firstNameColumn = new DataColumn("Item",   
        Type.GetType("System.String"));  
    table.Columns.Add(firstNameColumn);  
    return table;  
}  
        
private void PrintTable(DataTable table)  
{  
    foreach(DataRow row in table.Rows)  
    {  
        foreach(DataColumn column in table.Columns)  
        {  
            Console.WriteLine(row[column]);  
        }  
    }  
}

異常:

本文URL:http://www.bianceng.cn/Programming/csharp/201410/45585.htm

DataRow.ItemArray 屬性源代碼實現:

public object[] ItemArray  
{  
    get
    {  
        int defaultRecord = this.GetDefaultRecord();  
        object[] array = new object[this._columns.Count];  
        for (int i = 0; i < array.Length; i++)  
        {  
            DataColumn dataColumn = this._columns[i];  
            array[i] = dataColumn[defaultRecord];  
        }  
        return array;  
    }  
    set
    {  
        if (value == null)  
        {  
            throw ExceptionBuilder.ArgumentNull("ItemArray");  
        }  
        if (this._columns.Count < value.Length)  
        {  
            throw ExceptionBuilder.ValueArrayLength();  
        }  
        DataColumnChangeEventArgs dataColumnChangeEventArgs = null;  
        if (this._table.NeedColumnChangeEvents)  
        {  
            dataColumnChangeEventArgs = new DataColumnChangeEventArgs(this);  
        }  
        bool flag = this.BeginEditInternal();  
        for (int i = 0; i < value.Length; i++)  
        {  
            if (value[i] != null)  
            {  
                DataColumn dataColumn = this._columns[i];  
                if (-1L != this.rowID && dataColumn.ReadOnly)  
                {  
                    throw ExceptionBuilder.ReadOnly(dataColumn.ColumnName);  
                }  
                if (dataColumnChangeEventArgs != null)  
                {  
                    dataColumnChangeEventArgs.InitializeColumnChangeEvent(dataColumn, value[i]);  
                    this._table.OnColumnChanging(dataColumnChangeEventArgs);  
                }  
                if (dataColumn.Table != this._table)  
                {  
                    throw ExceptionBuilder.ColumnNotInTheTable(dataColumn.ColumnName, this._table.TableName);  
                }  
                if (-1L != this.rowID && dataColumn.ReadOnly)  
                {  
                    throw ExceptionBuilder.ReadOnly(dataColumn.ColumnName);  
                }  
                if (this.tempRecord == -1)  
                {  
                    this.BeginEditInternal();  
                }  
                object obj = (dataColumnChangeEventArgs != null) ? dataColumnChangeEventArgs.ProposedValue : value[i];  
                if (obj == null)  
                {  
                    if (dataColumn.IsValueType)  
                    {  
                        throw ExceptionBuilder.CannotSetToNull(dataColumn);  
                    }  
                    obj = DBNull.Value;  
                }  
                try
                {  
                    int proposedRecordNo = this.GetProposedRecordNo();  
                    dataColumn[proposedRecordNo] = obj;  
                }  
                catch (Exception e)  
                {  
                    if (ADP.IsCatchableOrSecurityExceptionType(e) && flag)  
                    {  
                        this.CancelEdit();  
                    }  
                    throw;  
                }  
                this.LastChangedColumn = dataColumn;  
                if (dataColumnChangeEventArgs != null)  
                {  
                    this._table.OnColumnChanged(dataColumnChangeEventArgs);  
                }  
            }  
        }  
        this.EndEdit();  
    }  
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved