Share via


DataColumn.DataType Properti

Definisi

Mendapatkan atau mengatur jenis data yang disimpan dalam kolom.

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

Nilai Properti

Objek Type yang mewakili jenis data kolom.

Atribut

Pengecualian

Kolom sudah memiliki data yang disimpan.

Contoh

Contoh berikut menambahkan kolom dari beberapa jenis data ke DataTable, lalu menambahkan satu baris ke tabel.

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

Keterangan

DataType Mengatur nilai sangat penting untuk menjamin pembuatan dan pembaruan data yang benar dalam sumber data.

Properti DataType mendukung jenis data .NET Framework dasar berikut:

serta jenis array berikut:

  • Byte[]

Pengecualian dihasilkan saat mengubah properti ini setelah kolom mulai menyimpan data.

Jika AutoIncrement diatur ke true sebelum mengatur DataType properti , dan Anda mencoba mengatur jenis ke apa pun kecuali jenis bilangan bulat, pengecualian dihasilkan.

Catatan

Kolom jenis Byte[] data memerlukan perlakuan khusus dalam kasus tertentu karena, tidak seperti jenis data .NET Framework dasar, ini adalah jenis data referensi. Jika kolom jenis Byte[] data digunakan sebagai PrimaryKey, atau sebagai Sort kunci atau RowFilter untuk DataView, setiap perubahan pada nilai kolom harus melibatkan penetapan Byte[] nilai kolom ke objek yang dibuat Byte[] secara terpisah. Penugasan ini diperlukan untuk memicu pembaruan indeks internal yang digunakan dengan mengurutkan, memfilter, dan operasi kunci primer. Hal ini diilustrasikan oleh contoh berikut:

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

Catatan

Meskipun dimungkinkan untuk mendefinisikan kolom sebagai jenis data selain .NET Framework dasar jenis data dan Byte[], kolom tersebut akan diperlakukan sebagai jenis yang ditentukan pengguna, tunduk pada pembatasan penggunaan berikut. (Untuk informasi selengkapnya tentang jenis yang ditentukan pengguna, lihat Membuat dan Menggunakan Jenis User-Defined)

  • Kolom tidak dapat menjadi bagian RowFilter dari ekspresi atau Select .

  • Jika kolom digunakan sebagai PrimaryKey, atau sebagai Sort atau untuk DataView, kolom harus diperlakukan sebagai bidang yang tidak dapat diubah; data kolom tidak boleh diubah setelah ditambahkan ke tabel.

  • Ini ColumnMapping hanya dapat diatur ke MappingType.Element.

  • Kelas yang mengimplementasikan jenis data kolom harus ditandai dengan SerializableAttribute, dan jika perlu mengimplementasikan ISerializable antarmuka atau IXmlSerializable .

  • Dukungan untuk pelacakan perubahan terbatas. Untuk menggunakan DataTable mekanisme pelacakan perubahan kelas, kelas yang mengimplementasikan jenis data kolom harus mengimplementasikan IChangeTracking antarmuka, atau mengambil alih tanggung jawab untuk menginformasikan DataRow kapan nilai kolom telah dimodifikasi, baik dengan memanggil SetModified pada baris atau dengan menetapkan objek nilai kolom ke objek nilai kolom yang dibuat secara terpisah.

Berlaku untuk

Lihat juga