DataColumn.DataType 属性

定义

获取或设置存储在列中的数据的类型。

C#
[System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))]
public Type DataType { get; set; }
C#
public Type DataType { get; set; }
C#
[System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))]
[System.Data.DataSysDescription("DataColumnDataTypeDescr")]
public Type DataType { get; set; }

属性值

一个 Type 对象,它表示列数据类型。

属性

例外

列已经存储了数据。

示例

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

C#
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;
 }

注解

DataType设置值对于保证正确创建和更新数据源中的数据非常重要。

属性DataType支持以下基.NET Framework数据类型:

以及以下数组类型:

  • Byte[]

在列开始存储数据后更改此属性时,将生成异常。

如果在AutoIncrement设置DataType属性之前将 设置为 true ,并且您尝试将类型设置为除整数类型以外的任何内容,则会生成异常。

备注

数据类型列Byte[]在某些情况下需要特殊处理,因为与基.NET Framework数据类型不同,它是引用数据类型。 如果将数据类型Byte[]的列用作 PrimaryKey,或用作 SortDataViewRowFilter 键,则对列值的任何更改都必须涉及将Byte[]列值分配给单独实例化Byte[]的对象。 需要此分配才能触发排序、筛选和主键操作所使用的内部索引的更新。 下面的示例对此进行演示:

C#
byte[] columnValue = (byte[])myDataTable.Rows[0][0];
byte[] newValue = (byte[])columnValue.Clone();
newValue[1] = 2;
myDataTable.Rows[0][0] = newValue;

备注

尽管可以将列定义为除基.NET Framework数据类型和 Byte[]之外的数据类型,但此类列将被视为用户定义的类型,但需遵守以下使用限制。 (有关用户定义的类型的详细信息,请参阅 创建和使用 User-Defined 类型)

适用于

产品 版本
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

另请参阅