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

发布于:2022-12-02 ⋅ 阅读:(441) ⋅ 点赞:(0)

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


在这里插入图片描述

🌈写在前面:

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


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

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 没有默认值 ColumnNameCaption。 将它添加到 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 指定的 ColumnNameDataType.

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 中的数据类型映射

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

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

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

♋ 更多方法

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


⭐写在结尾:

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

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

本文含有隐藏内容,请 开通VIP 后查看