【.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类。
⭐写在结尾:
文章中出现的任何错误请大家批评指出,一定及时修改。
希望写在这里的小伙伴能给个三连支持!