当前位置: 首页 > news >正文

【.Net实用方法总结】 整理并总结System.Data中DataColumn类及其方法介绍

🐋作者简介:博主是一位.Net开发者,同时也是RPA和低代码平台的践行者。
🐬个人主页:会敲键盘的肘子
🐰系列专栏:.Net实用方法总结
🦀专栏简介:博主针对.Net开发和C站问答过程中遇到的问题进行总结,形成本专栏,希望可以帮助到您解决问题。
🐶座右铭:总有一天你所坚持的会反过来拥抱你。


在这里插入图片描述

🌈写在前面:

本文主要介绍System.Data命名空间的 DataColumn 类,介绍其常用的方法和实践。


👉本文关键字:System.Data、DataColumn类、DataTable类、方法实践、C#

文章目录

      • 1️⃣ System.Data命名空间
      • 2️⃣ DataColumn类
        • ♈ 定义
        • ♉ 构造函数
          • DataColumn()
          • DataColumn(String)
          • DataColumn(String, Type)
          • DataColumn(String, Type, String)
    • DataColumn(String, Type, String, MappingType)
        • ♊ 属性
          • AllowDBNull 获取或设置一个值,该值指示对于属于该表的行,此列中是否允许空值
          • AutoIncrement 获取或设置一个值,该值指示对于添加到该表中的新行,列是否将列的值自动递增
          • AutoIncrementSeed 获取或设置其 AutoIncrement 属性设置为 `true` 的列的起始值。 默认值为 0
          • AutoIncrementStep 获取或设置其 AutoIncrement 属性设置为 `true` 的列使用的增量
          • Caption 获取或设置列的标题
          • ColumnName 获取或设置 DataColumnCollection 中的列的名称
          • DataType 获取或设置存储在列中的数据的类型
          • Table 获取列所属的 DataTable
        • ♌ 注解
        • ♋ 更多方法

1️⃣ System.Data命名空间

提供对表示 ADO.NET 体系结构的类的访问权限。 通过 ADO.NET,可以生成可有效管理多个数据源的数据的组件。

2️⃣ DataColumn类

♈ 定义

表示 DataTable 中的列的架构。

public class DataColumn : System.ComponentModel.MarshalByValueComponent

示例

以下示例创建一个 DataTable 包含多个 DataColumn 对象的对象。

private void MakeTable()
{
    // Create a DataTable.
    DataTable table = new DataTable("Product");

    // Create a DataColumn and set various properties.
    DataColumn column = new DataColumn();
    column.DataType = System.Type.GetType("System.Decimal");
    column.AllowDBNull = false;
    column.Caption = "Price";
    column.ColumnName = "Price";
    column.DefaultValue = 25;

    // Add the column to the table.
    table.Columns.Add(column);

    // Add 10 rows and set values.
    DataRow row;
    for(int i = 0; i < 10; i++)
    {
        row = table.NewRow();
        row["Price"] = i + 1;

        // Be sure to add the new row to the
        // DataRowCollection.
        table.Rows.Add(row);
    }
}

♉ 构造函数

DataColumn()

将类的新实例 DataColumn 初始化为类型字符串。

public DataColumn ();

示例

以下示例创建一个新DataColumn属性,设置各种属性,并将其添加到对象中DataColumnCollectionDataTable。

private void AddDataColumn(DataTable table)
{
    DataColumn column = new DataColumn();

    // Set various properties.
    column.ColumnName = "id";
    column.DataType = System.Type.GetType("System.Int32");
    column.AutoIncrement = true;
    column.AutoIncrementSeed = 1;
    column.AutoIncrementStep = 1;
    column.ReadOnly = true;

    // Add to Columns collection.
    table.Columns.Add(column);
}

注解

创建时,对象 DataColumn 没有默认值 ColumnName 或 Caption。 将它添加到 a DataColumnCollection时,如果未向该名称分配 ColumnName名称,则会生成默认名称 (“Column1”、“Column2”等) 。

DataColumn(String)

使用指定的列名称将 DataColumn 类的新实例初始化为类型字符串。

public DataColumn (string? columnName);

参数

columnName

String

一个字符串,它表示要创建的列的名称。 如果设置为 null 或空字符串 (“”),则当添加到列集合中时,将指定一个默认名称。

示例

以下示例创建一个具有指定ColumnName值的新DataColumn项。

private void AddDataColumn(DataTable table)
{
    DataColumn column = new DataColumn("id");

    // Set various properties.
    column.DataType = System.Type.GetType("System.Int32");
    column.AutoIncrement = true;
    column.AutoIncrementSeed = 1;
    column.AutoIncrementStep = 1;
    column.ReadOnly = true;

    // Add to Columns collection.
    table.Columns.Add(column);
}

注解

默认情况下,特定于列的名称将成为 Caption 属性值。

DataColumn(String, Type)

使用指定列名称和数据类型初始化 DataColumn 类的新实例。

public DataColumn (string? columnName, Type dataType);

参数

columnName

String

一个字符串,它表示要创建的列的名称。 如果设置为 null 或空字符串 (“”),则当添加到列集合中时,将指定一个默认名称。

dataType

Type

支持的 DataType。

示例

以下示例使用 DataColumn 指定的 ColumnName 和 DataType.

private void AddDataColumn(DataTable table)
{
    System.Type typeInt32 =
        System.Type.GetType("System.Int32");
    DataColumn column = new DataColumn("id", typeInt32);

    // Set various properties.
    column.AutoIncrement = true;
    column.AutoIncrementSeed = 1;
    column.AutoIncrementStep = 1;
    column.ReadOnly = true;

    // Add to Columns collection.
    table.Columns.Add(column);
}
DataColumn(String, Type, String)

使用指定的名称、数据类型和表达式初始化 DataColumn 类的新实例。

public DataColumn (string? columnName, Type dataType, string? expr);

参数

columnName

String

一个字符串,它表示要创建的列的名称。 如果设置为 null 或空字符串 (“”),则当添加到列集合中时,将指定一个默认名称。

dataType

Type

支持的 DataType。

expr

String

用于创建该列的表达式。 有关更多信息,请参见 Expression 属性。

示例

以下示例创建计算列。

private void AddDataColumn(DataTable table)
{
    System.Type decimalType;
    decimalType = System.Type.GetType("System.Decimal");

    // Create the column. The name is 'Tax,' with data type Decimal,and
    // an expression ('UnitPrice * .0862) to calculate the tax.
    DataColumn column = new DataColumn("Tax",
        decimalType, "UnitPrice * .0862");

    // Set various properties.
    column.AutoIncrement = false;
    column.ReadOnly = true;

    // Add to Columns collection.;
    table.Columns.Add(column);
}

DataColumn(String, Type, String, MappingType)

使用指定名称、数据类型、表达式和确定列是否为特性的值,初始化 DataColumn 类的新实例。

public DataColumn (string? columnName, Type dataType, string? expr, System.Data.MappingType type);

参数

columnName

String

一个字符串,它表示要创建的列的名称。 如果设置为 null 或空字符串 (“”),则当添加到列集合中时,将指定一个默认名称。

dataType

Type

支持的 DataType。

expr

String

用于创建该列的表达式。 有关更多信息,请参见 Expression 属性。

type

MappingType

MappingType 值之一。

示例

以下示例构造计算列。

private void CreateComputedColumn(DataTable table)
{
    System.Type myDataType =
        System.Type.GetType("System.Decimal");

    // The expression multiplies the "Price" column value
    // by the "Quantity" to create the "Total" column.
    string expression = "Price * Quantity";

    // Create the column, setting the type to Attribute.
    DataColumn column = new DataColumn("Total", myDataType,
        expression, MappingType.Attribute);

    // Set various properties.
    column.AutoIncrement = false;
    column.ReadOnly = true;

    // Add the column to a DataTable object's to DataColumnCollection.
    DataSet1.Tables["OrderDetails"].Columns.Add(column);
}

注解

参数 type 设置 ColumnMapping 属性。 该属性指定在转换为 XML 文档时如何 DataColumn 映射 a DataSet 。 例如,如果列名为“fName”,并且它包含的值为“Bob”,并且 type 设置为 MappingType.Attribute,则 XML 元素如下所示:

有关如何将列映射到元素或属性的详细信息,请参阅该 ColumnMapping 属性。

♊ 属性

AllowDBNull 获取或设置一个值,该值指示对于属于该表的行,此列中是否允许空值
public bool AllowDBNull { get; set; }

true 如果允许空值,则为 ;否则,为 false. 默认值为 true

示例

private void AddNullAllowedColumn()
{
    DataColumn column;
    column = new DataColumn("classID",
        System.Type.GetType("System.Int32"));
    column.AllowDBNull = true;

    // Add the column to a new DataTable.
    DataTable table;
    table = new DataTable();
    table.Columns.Add(column);
}
AutoIncrement 获取或设置一个值,该值指示对于添加到该表中的新行,列是否将列的值自动递增
public bool AutoIncrement { get; set; }

如果列的值自动递增,则为 true;否则为 false。 默认值为 false

示例

private void AddAutoIncrementColumn()
{
    DataColumn column = new DataColumn();
    column.DataType = System.Type.GetType("System.Int32");
    column.AutoIncrement = true;
    column.AutoIncrementSeed = 1000;
    column.AutoIncrementStep = 10;

    // Add the column to a new DataTable.
    DataTable table = new DataTable("table");
    table.Columns.Add(column);
}
AutoIncrementSeed 获取或设置其 AutoIncrement 属性设置为 true 的列的起始值。 默认值为 0
public long AutoIncrementSeed { get; set; }
AutoIncrementStep 获取或设置其 AutoIncrement 属性设置为 true 的列使用的增量
public long AutoIncrementStep { get; set; }
Caption 获取或设置列的标题
public string Caption { get; set; }

列的标题。 如果没有设置,则返回 ColumnName 的值。

示例

以下示例创建新的 DataTable。 然后,它将三 DataColumn 个对象添加到一个对象, DataColumnCollection 并为每个对象设置 Caption 属性 DataColumn。

private void CreateDataTable()
{
   DataTable table;
   DataColumn column;

   table = new DataTable("Customers");

   //CustomerID column
   column = table.Columns.Add("CustomerID",
       System.Type.GetType("System.Int32"));
   column.Unique = true;
    
   //CustomerName column
   column = table.Columns.Add("CustomerName",
       System.Type.GetType("System.String"));
   column.Caption = "Name";

   //CreditLimit
   column = table.Columns.Add("CreditLimit",
       System.Type.GetType("System.Double"));
   column.DefaultValue = 0;
   column.Caption = "Limit";

   table.Rows.Add(new object[] {1, "Jonathan", 23.44});
   table.Rows.Add(new object[] {2, "Bill", 56.87});
}private void AddAutoIncrementColumn()
{
    DataColumn column = new DataColumn();
    column.DataType = System.Type.GetType("System.Int32");
    column.AutoIncrement = true;
    column.AutoIncrementSeed = 1000;
    column.AutoIncrementStep = 10;

    // Add the column to a new DataTable.
    DataTable table = new DataTable("table");
    table.Columns.Add(column);
}
ColumnName 获取或设置 DataColumnCollection 中的列的名称
public string ColumnName { get; set; }

列的名称。

示例

以下示例获取 ColumnName 每个表中每一 DataSet列的列。 该示例还演示如何使用新的ColumnName方法创建一DataColumn个 。

private void PrintColumnNames(DataSet dataSet)
{
    // For each DataTable, print the ColumnName.
    foreach(DataTable table in dataSet.Tables)
    {
        foreach(DataColumn column in table.Columns)
        {
            Console.WriteLine(column.ColumnName);
        }
    }
}

private void AddColumn(DataTable table)
{
    DataColumn column;
    column = new DataColumn();
    column.ColumnName = "SupplierID";
    column.DataType = System.Type.GetType("System.String");
    column.Unique = true;
    column.AutoIncrement = false;
    column.Caption = "SupplierID";
    column.ReadOnly = false;

    // Add the column to the table's columns collection.
    table.Columns.Add(column);
}
DataType 获取或设置存储在列中的数据的类型
[System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))]
public Type DataType { get; set; }

示例

以下示例向表中 DataTable添加多个数据类型的列,然后将一行添加到表中。

public DataTable MakeDataTable(){

    DataTable myTable;
    DataRow myNewRow;
    // Create a new DataTable.
    myTable = new DataTable("My Table");

    // Create DataColumn objects of data types.
    DataColumn colString = new DataColumn("StringCol");
    colString.DataType = System.Type.GetType("System.String");
    myTable.Columns.Add(colString);

    DataColumn colInt32 = new DataColumn("Int32Col");
    colInt32.DataType = System.Type.GetType("System.Int32");
    myTable.Columns.Add(colInt32);

    DataColumn colBoolean = new DataColumn("BooleanCol");
    colBoolean.DataType = System.Type.GetType("System.Boolean");
    myTable.Columns.Add(colBoolean);

    DataColumn colTimeSpan = new DataColumn("TimeSpanCol");
    colTimeSpan.DataType = System.Type.GetType("System.TimeSpan");
    myTable.Columns.Add(colTimeSpan);

    DataColumn colDateTime = new DataColumn("DateTimeCol");
    colDateTime.DataType = System.Type.GetType("System.DateTime");
    myTable.Columns.Add(colDateTime);

    DataColumn colDecimal = new DataColumn("DecimalCol");
    colDecimal.DataType = System.Type.GetType("System.Decimal");
    myTable.Columns.Add(colDecimal);

    DataColumn colByteArray = new DataColumn("ByteArrayCol");
    colByteArray.DataType = System.Type.GetType("System.Byte[]");
    myTable.Columns.Add(colByteArray);

    // Populate one row with values.
    myNewRow = myTable.NewRow();

    myNewRow["StringCol"] = "Item Name";
    myNewRow["Int32Col"] = 2147483647;
    myNewRow["BooleanCol"] = true;
    myNewRow["TimeSpanCol"] = new TimeSpan(10,22,10,15,100);
    myNewRow["DateTimeCol"] = System.DateTime.Today;
    myNewRow["DecimalCol"] = 64.0021;
    myNewRow["ByteArrayCol"] = new Byte[] { 1, 5, 120 };
    myTable.Rows.Add(myNewRow);
    return myTable;
 }
Table 获取列所属的 DataTable
[System.ComponentModel.Browsable(false)]
public System.Data.DataTable? Table { get; }

DataTable 所属的 DataColumn。

示例

以下示例返回其Table属性的DataColumn父表。

private void GetTable(DataColumn column)
{
    // Get the Table of the column.
    DataTable table = column.Table;
    Console.WriteLine("columns count: " + table.Columns.Count);
    Console.WriteLine("rows count: " + table.Rows.Count);
}

♌ 注解

DataColumn这是创建架构DataTable的基本构建基块。 通过将一个或多个 DataColumn 对象添加到该 DataColumnCollection架构来生成架构。 有关详细信息,请参阅 向 DataTable 添加列。

每个 DataColumn 属性都有一个 DataType 属性,用于确定包含的数据 DataColumn 类型。 例如,可以将数据类型限制为整数、字符串或十进制数。 由于包含 DataTable 的数据通常合并回其原始数据源中,因此必须将数据类型与数据源中的数据类型匹配。 有关详细信息,请参阅 ADO.NET 中的数据类型映射。

属性(例如 AllowDBNull, Unique)对 ReadOnly 数据的输入和更新施加限制,从而有助于保证数据完整性。 还可以使用AutoIncrement和AutoIncrementSeedAutoIncrementStep属性来控制自动数据生成。 有关列的详细信息 AutoIncrement ,请参阅 创建自动创建列。 有关详细信息,请参阅定义主键。

还可以通过创建值并将其添加到所属位置来确保值DataColumn是唯一UniqueConstraint的DataTableDataColumn。ConstraintCollection 有关详细信息,请参阅DataTable 约束。

若要在对象之间 DataColumn 创建关系,请创建一个 DataRelation 对象并将其添加到 DataRelationCollection 对象的 DataSet关系。

♋ 更多方法

更多方法请查阅官方文档DataColumn类。


⭐写在结尾:

文章中出现的任何错误请大家批评指出,一定及时修改。

希望写在这里的小伙伴能给个三连支持

相关文章:

  • ffmpeg、ffplay、ffprobe 常用命令详解(音视频必备)
  • [SpringMVC] SpringMVC入门
  • [ 数据结构 - C++]红黑树RBTree
  • 【闲笔杂谈】ArrayList的构造与扩容机制
  • Flink系列之:基于Flink CDC2.0实现海量数据的实时同步和转换
  • [架构之路-21]:目标系统 - 软件系统 - 计算机系统架构、计算机指令系统、结构化程序与分层编程。
  • acwing算法基础模版分析
  • 数据库-MySQL-基础(7)函数
  • MySQL入门学习笔记(下)
  • 15.4 - 分类树法
  • python容器
  • xilinx FPGA FX2 usb通信模块之上位机发送的数据格式
  • 阿里云对象存储OSS存储照片
  • AES、RSA、DH加密解密
  • 高效的操作符使用剖析
  • 【Leetcode】104. 二叉树的最大深度
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • javascript 总结(常用工具类的封装)
  • rc-form之最单纯情况
  • SpiderData 2019年2月13日 DApp数据排行榜
  • windows-nginx-https-本地配置
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 简析gRPC client 连接管理
  • 如何优雅地使用 Sublime Text
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 我与Jetbrains的这些年
  • 一份游戏开发学习路线
  • 用jQuery怎么做到前后端分离
  • 栈实现走出迷宫(C++)
  • 主流的CSS水平和垂直居中技术大全
  • nb
  • 你对linux中grep命令知道多少?
  • 阿里云ACE认证之理解CDN技术
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • 正则表达式-基础知识Review
  • (C语言)fgets与fputs函数详解
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (六)激光线扫描-三维重建
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (一)Java算法:二分查找
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (原創) 未来三学期想要修的课 (日記)
  • .equals()到底是什么意思?
  • .net web项目 调用webService
  • .NET 依赖注入和配置系统
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • [100天算法】-目标和(day 79)
  • [12] 使用 CUDA 进行图像处理
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]