Aracılığıyla paylaş


DataColumn.DataType Özellik

Tanım

Sütunda depolanan veri türünü alır veya ayarlar.

public:
 property Type ^ DataType { Type ^ get(); void set(Type ^ value); };
[System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))]
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)]
public Type DataType { get; set; }
[System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))]
public Type DataType { get; set; }
public Type DataType { get; set; }
[System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))]
[System.Data.DataSysDescription("DataColumnDataTypeDescr")]
public Type DataType { get; set; }
[<System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))>]
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)>]
member this.DataType : Type with get, set
[<System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))>]
member this.DataType : Type with get, set
member this.DataType : Type with get, set
[<System.ComponentModel.TypeConverter(typeof(System.Data.ColumnTypeConverter))>]
[<System.Data.DataSysDescription("DataColumnDataTypeDescr")>]
member this.DataType : Type with get, set
Public Property DataType As Type

Özellik Değeri

Type Sütun veri türünü temsil eden nesne.

Öznitelikler

Özel durumlar

Sütunda depolanan veriler zaten var.

Örnekler

Aşağıdaki örnek, bir DataTableöğesine birkaç veri türünde sütun ekler ve sonra tabloya bir satır ekler.

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 New DataColumn("StringCol")
    colString.DataType = System.Type.GetType("System.String")
    myTable.Columns.Add(colString) 
 
    Dim colInt32 As New DataColumn("Int32Col")
    colInt32.DataType = System.Type.GetType("System.Int32")
    myTable.Columns.Add(colInt32)
 
    Dim colBoolean As New DataColumn("BooleanCol")
    colBoolean.DataType = System.Type.GetType("System.Boolean")
    myTable.Columns.Add(colBoolean)
 
    Dim colTimeSpan As New DataColumn("TimeSpanCol")
    colTimeSpan.DataType = System.Type.GetType("System.TimeSpan")
    myTable.Columns.Add(colTimeSpan)
 
    Dim colDateTime As New DataColumn("DateTimeCol")
    colDateTime.DataType = System.Type.GetType("System.DateTime")
    myTable.Columns.Add(colDateTime)
 
    Dim colDecimal As 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

Açıklamalar

Değerin DataType ayarlanması, bir veri kaynağındaki verilerin doğru oluşturulmasını ve güncelleştirilmesini sağlamak için çok önemlidir.

DataType özelliği aşağıdaki temel .NET Framework veri türlerini destekler:

ve aşağıdaki dizi türü:

  • Byte[]

Sütun verileri depolamaya başladıktan sonra bu özellik değiştirilirken bir özel durum oluşturulur.

özelliğini ayarlamadan DataType önce olarak ayarlanırsa AutoIncrementtrue ve türü tamsayı türü dışında herhangi bir değere ayarlamaya çalışırsanız, bir özel durum oluşturulur.

Uyarı

Temel .NET Framework veri türlerinden farklı olarak bir başvuru veri türü olduğundan, veri türü Byte[] sütunu belirli durumlarda özel işlem gerektirir. Veri türündeki Byte[] bir sütun , PrimaryKeyveya için veya RowFilter anahtarı olarak kullanılıyorsa, sütun değerinde yapılan herhangi bir DataViewSort değişiklik, sütun değerinin ayrı olarak örneklendirilmiş Byte[] bir nesneye atanması Byte[] gerekir. Bu atama sıralama, filtreleme ve birincil anahtar işlemleri tarafından kullanılan iç dizinlerin güncelleştirmesini tetikleme amacıyla gereklidir. Bu, aşağıdaki örnekte gösterilmiştir:

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

Uyarı

Bir sütunu temel .NET Framework veri türleri ve dışında bir veri türü olarak tanımlamak mümkün olsa da Byte[], bu tür bir sütun aşağıdaki kullanım kısıtlamalarına tabi olarak kullanıcı tanımlı bir tür olarak ele alınacaktır. (Kullanıcı tanımlı türler hakkında daha fazla bilgi için bkz . User-Defined Türlerini Oluşturma ve Kullanma)

  • Sütun bir RowFilter veya Select ifadesinin parçası olamaz.

  • Sütun , PrimaryKeyveya Sort için DataViewkullanılıyorsa, sabit bir alan olarak kabul edilmelidir; sütun verileri tabloya eklendikten sonra değiştirilmemelidir.

  • Yalnızca ColumnMapping olarak MappingType.Elementayarlanabilir.

  • Sütunun veri türünü uygulayan sınıfı ile işaretlenmeli SerializableAttributeve gerekirse veya IXmlSerializable arabirimini ISerializable uygulamalıdır.

  • Değişiklik izleme desteği sınırlıdır. Sınıfın DataTable değişiklik izleme mekanizmasını kullanmak için sütunun veri türünü uygulayan sınıfın arabirimi uygulaması IChangeTracking veya satırda çağırarak SetModified veya sütun değeri nesnesini ayrı bir örneklenmiş sütun değeri nesnesine atayarak sütun değerinin ne zaman değiştirildiğini bildirme DataRow sorumluluğunu üstlenmesi gerekir.

Şunlara uygulanır

Ayrıca bkz.