DataColumn.DataType DataColumn.DataType DataColumn.DataType DataColumn.DataType Property

定義

取得または列に格納されたデータの種類を設定します。Gets or sets the type of data stored in the column.

public:
 property Type ^ DataType { Type ^ get(); void set(Type ^ value); };
[System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))]
[System.Data.DataSysDescription("DataColumnDataTypeDescr")]
public Type DataType { get; set; }
member this.DataType : Type with get, set
Public Property DataType As Type

プロパティ値

AType列のデータ型を表すオブジェクト。A Type object that represents the column data type.

例外

列が既に格納されているデータを使用しています。The column already has data stored.

次の例をいくつかのデータ型の列の追加、DataTableテーブルを 1 つの行に追加します。The following example adds columns of several data types to a DataTable, and then adds one row to the table.

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;  
 }
Public Function MakeDataTable() As DataTable
    
    Dim myTable As DataTable 
    Dim myNewRow As DataRow 
    ' Create a new DataTable.
    myTable = New DataTable("My Table")
 
    ' Create DataColumn objects of data types.
    Dim colString As DataColumn = New DataColumn("StringCol")
    colString.DataType = System.Type.GetType("System.String")
    myTable.Columns.Add(colString) 
 
    Dim colInt32 As DataColumn = New DataColumn("Int32Col")
    colInt32.DataType = System.Type.GetType("System.Int32")
    myTable.Columns.Add(colInt32)
 
    Dim colBoolean As DataColumn = New DataColumn("BooleanCol")
    colBoolean.DataType = System.Type.GetType("System.Boolean")
    myTable.Columns.Add(colBoolean)
 
    Dim colTimeSpan As DataColumn = New DataColumn("TimeSpanCol")
    colTimeSpan.DataType = System.Type.GetType("System.TimeSpan")
    myTable.Columns.Add(colTimeSpan)
 
    Dim colDateTime As DataColumn = New DataColumn("DateTimeCol")
    colDateTime.DataType = System.Type.GetType("System.DateTime")
    myTable.Columns.Add(colDateTime)
 
    Dim colDecimal As DataColumn = New DataColumn("DecimalCol")
    colDecimal.DataType = System.Type.GetType("System.Decimal")
    myTable.Columns.Add(colDecimal)
 
    ' 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)
    MakeDataTable = myTable  
 End Function

注釈

設定、DataType値が適切な作成を保証して、データ ソースのデータの更新に非常に重要です。Setting the DataType value is very important to guaranteeing the correct creation and updating of data in a data source.

DataTypeプロパティは、次の .NET Framework の基本データ型をサポートしています。The DataType property supports the following base .NET Framework data types:

次の配列の種類。as well as the following array type:

  • Byte[]

データを格納する開始が、列の後にこのプロパティを変更したときに、例外が生成されます。An exception is generated when changing this property after the column has begun storing data.

場合AutoIncrementに設定されているtrue設定する前に、DataTypeは整数型以外のすべての種類を設定しようと、プロパティ、例外が生成されます。If AutoIncrement is set to true before setting the DataType property, and you try to set the type to anything except an integer type, an exception is generated.

注意

データ型の列Byte[]のため、参照データ型が基本の .NET Framework データ型とは異なり、場合によっては、特別な処理を必要とします。A column of data type Byte[] requires special treatment in certain cases since, unlike the base .NET Framework data types, it is a reference data type. 列データ型の場合Byte[]として使用されます、 PrimaryKey、または、SortまたはRowFilterのキーをDataView、列の値に変更する必要がありますの割り当てが含まれる、Byte[]列の値を個別にインスタンス化されたByte[]オブジェクト。If a column of data type Byte[] is used as a PrimaryKey, or as a Sort or RowFilter key for a DataView, any change to the column value must involve assigning the Byte[] column value to a separately instantiated Byte[] object. 並べ替え、フィルター、および主キー操作で使用される内部のインデックスの更新を開始するには、この割り当てが必要です。This assignment is required to trigger the update of the internal indexes used by sorting, filtering, and primary key operations. この例を次に示します。This is illustrated by the following example:

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

注意

データ型の基本の .NET Framework データ型以外の場合、列を定義することはできますが、 Byte[]、このような列は、次の使用量制限の対象のユーザー定義の型として扱われます。Although it is possible to define a column as data type other than the base .NET Framework data types and Byte[], such a column will be treated as a user-defined type, subject to the following usage restrictions. (ユーザー定義型の詳細については、次を参照してくださいユーザーの種類の作成と。)。(For more information on user-defined types, see Creating and Using User-Defined Types.)

  • 列がの一部にすることはできません、RowFilterまたはSelect式。The column cannot be part of a RowFilter or Select expression.

  • 列として使用する場合、 PrimaryKey、または、Sortまたは、 DataView、変更できないフィールドとして扱う必要があります。 が、テーブルに追加されたら、列のデータは変更できません。If the column is used as a PrimaryKey, or as a Sort or for a DataView, it must be treated as an immutable field; the column data must not be changed once it has been added to the table.

  • そのColumnMappingにしか設定MappingType.Elementします。Its ColumnMapping can be only set to MappingType.Element.

  • クラスで実装する必要があります、列のデータ型をマークする必要があります、 SerializableAttribute、実装のために必要な場合と、ISerializableまたはIXmlSerializableインターフェイス。The class that implements the column's data type must be must be marked with the SerializableAttribute, and if necessary implement the ISerializable or IXmlSerializable interface.

  • 変更の追跡のサポートは制限されています。Support for change tracking is limited. 利用する、DataTableクラスの変更の追跡メカニズム、列のデータ型を実装するクラスを実装する必要がありますか、IChangeTrackingインターフェイス、または通知する役割を引き継ぎ、DataRow列の値がされている場合変更されると、いずれかを呼び出したSetModified行または列の値オブジェクトを個別にインスタンス化された列の値オブジェクトに割り当てることで。To utilize the DataTable class' change tracking mechanism, the class that implements the column's data type must either implement the IChangeTracking interface, or take over the responsibility for informing the DataRow when the column value has been modified, either by calling SetModified on the row or by assigning the column value object to a separately instantiated column value object.

適用対象

こちらもご覧ください