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))]
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))>]
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 bir nesne.

Öznitelikler

Özel durumlar

Sütunda depolanan veriler zaten var.

Örnekler

Aşağıdaki örnek, bir DataTableöğesine çeşitli veri türlerinde sütunlar 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 şekilde oluşturulmasını ve güncelleştirilmesini garanti etmek 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 veri 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.

Not

Veri türü Byte[] sütunu belirli durumlarda özel işlem gerektirir çünkü temel .NET Framework veri türlerinden farklı olarak bir başvuru veri türüdür. Veri türündeki Byte[] bir sütun, PrimaryKeyiçin veya RowFilter veya anahtarı olarak Sort kullanılıyorsa, sütun değerinde yapılan herhangi bir DataViewdeğişiklik, sütun değerini ayrı bir örneklenmiş Byte[] nesneye atamayı Byte[] içermelidir. Bu atama sıralama, filtreleme ve birincil anahtar işlemleri tarafından kullanılan iç dizinlerin güncelleştirmesi tetiklenmesi için 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;

Not

Bir sütunu temel .NET Framework veri türleri ve Byte[]dışında bir veri türü olarak tanımlamak mümkün olsa da, 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 kabul edilir. (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, için veya PrimaryKeyveya SortDataViewolarak kullanı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 SerializableAttributeişaretlenmelidir ve gerekirse veya IXmlSerializable arabirimini ISerializable uygulayın.

  • 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 arabirimini uygulaması IChangeTracking veya sütun değerinin ne zaman değiştirildiğini bildirme DataRow sorumluluğunu üstlenmesi gerekir( satırda çağrı SetModified yaparak veya sütun değeri nesnesini ayrı bir örneklenmiş sütun değeri nesnesine atayarak).

Şunlara uygulanır

Ayrıca bkz.