C# DataRow.ItemArray 屬性
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]);
}
}
}異常:
| 異常類型 | 條件 |
|---|---|
|
數組大於表中的列數。 |
|
|
數組中的值與其相應的 DataColumn 中的 DataType 不匹配。 |
|
|
編輯破壞了約束。 |
|
|
編輯試圖更改隻讀列的值。 |
|
|
編輯試圖將空值放在 DataColumn 對象的 AllowDBNull 為 false 的列中。 |
|
|
該行已被刪除。 |
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();
}
}
最後更新:2017-04-03 20:19:22
上一篇:
android電話攔截
下一篇:
Delete與truncate的區別
BDAC 2017中國大數據應用大會(成都)等您赴約!
IBM HTTP Server Plugin默認plugin-key.kdb 密鑰數據庫文件默認個人證書密碼過期分析與解決方法
Oracle 12.2新特性掌上手冊 - 第二卷 In-Memory增強
Oracle性能優化學習筆記之選擇最有效率的表名順序
Cocos2D-x學習教材
【成都雲棲大會】“安全”成為焦點話題,阿裏雲發布“產業安全扶助計劃”
HTTP 1.1與HTTP 1.0的比較
K-均值聚類算法
cocos2dx 一步步入門 CCMoveTo/CCMoveBy/CCRotateTo/CCRotateBy
php還是java,選擇比努力更重要!