C# DataRow.ItemArray 属性

简介: DataRow.ItemArray 属性 通过一个数组来获取或设置此行的所有值。 命名空间:System.Data程序集:System.Data(在 system.data.dll 中) 代码示例: private void CreateRowsWithItemArray(){ // Make a DataTable using the function below.
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]);
        }
    }
}
异常:

异常类型 条件

ArgumentException

数组大于表中的列数。

InvalidCastException

数组中的值与其相应的 DataColumn 中的 DataType 不匹配。

ConstraintException

编辑破坏了约束。

ReadOnlyException

编辑试图更改只读列的值。

NoNullAllowedException

编辑试图将空值放在 DataColumn 对象的 AllowDBNull 为 false 的列中。

DeletedRowInaccessibleException

该行已被删除。

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();
	}
}


目录
相关文章
|
人工智能 移动开发 Java
Android Studio插件版本与Gradle 版本对应关系
Android Studio插件版本与Gradle 版本对应关系
4466 0
Android Studio插件版本与Gradle 版本对应关系
|
8月前
|
容器
HarmonyOS NEXT实战:列表和懒加载
本教程介绍如何在HarmonyOS应用中实现列表布局与懒加载功能,提升页面性能。通过创建ProductModel模型、BasicDataSource数据源,并结合ListDataSource与LazyForEach组件,实现高效的数据展示与动态加载。适用于教育与实战学习。
267 0
|
11月前
|
云安全 安全 测试技术
阿里云安全体检功能评测报告——个人开发者视角
作为一名个人开发者,我日常工作繁重,涵盖代码开发、部署、实施和优化。为确保服务器安全,使用阿里云安全体检功能对测试环境主机进行扫描,发现并修复了polkit pkexec本地提权漏洞(CVE-2021-4034)。该工具能快速定位CVE漏洞并提供修复建议,但存在二次核验延迟问题,希望未来能优化扫描效率和报告可视化效果。
240 10
|
人工智能 前端开发 IDE
通义灵码一周年测评:@workspace 和 @terminal 新功能体验分享
作为一名前端开发工程师,我近期体验了通义灵码的@workspace和@terminal新功能。@workspace通过智能解析项目结构,帮助快速上手新项目;@terminal则提供内置命令行环境,简化代码调试和系统管理。这两项功能显著提升了开发效率和代码管理的便捷性,是前端开发的得力助手。
通义灵码一周年测评:@workspace 和 @terminal 新功能体验分享
|
存储 数据处理 对象存储
云端问道方案教学4期—多媒体数据存储与分发
本文整理自阿里云存储服务产品团队关于多媒体数据存储与分发的分享,涵盖以下四部分内容:1)行业痛点及背景:分析Web 2.0到AIGC时代下多媒体行业的存储挑战;2)方案优势介绍:结合对象存储(OSS)、智能媒体管理(IMM)和内容分发网络(CDN),提供高效、低成本的解决方案;3)典型场景应用:包括音视频、在线教育、网站/APP/小程序、游戏下载等场景的具体应用;4)选型推荐:根据业务需求选择合适的产品配置。该方案通过动静分离、智能处理和全球加速,帮助企业在数据存储与分发中实现降本增效。
317 2
|
存储 Java Spring
Spring之国际化:i18n
【1月更文挑战第17天】 一、i18n概述 二、Java国际化 三、Spring6国际化 1、MessageSource接口 2、使用Spring6国际化
464 1
|
存储 数据可视化 数据挖掘
MySQL数据分析实战:销售和用户行为分析案例分享
MySQL是一种常用的关系型数据库管理系统,可以用来存储和管理大量的数据。除了存储数据,MySQL还可以用来进行数据分析。在本文中,我将介绍如何使用MySQL进行数据分析,并提供一些实际的示例。
2531 3
|
域名解析 网络协议 应用服务中间件
阿里云服务器公网IP怎么绑定域名?
阿里云服务器公网IP怎么绑定域名?
4107 0
阿里云服务器公网IP怎么绑定域名?
|
存储 SQL 关系型数据库
PolarDB-x 比mysql查询性能怎么样?速度快吗
PolarDB-x 比mysql查询性能怎么样?速度快吗
886 0
|
Linux iOS开发 Docker
Docker配置教程:实战指南与易错点盘点
Docker配置教程:实战指南与易错点盘点
1035 0