DataColumn.DataType Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.