Assembly : System.Data (dans system.data.dll)
Syntaxe<SerializableAttribute> _ Public Class DataTable Inherits MarshalByValueComponent Implements IListSource, ISupportInitializeNotification, ISupportInitialize, ISerializable, _ IXmlSerializable
Dim instance As DataTable
[SerializableAttribute] public class DataTable : MarshalByValueComponent, IListSource, ISupportInitializeNotification, ISupportInitialize, ISerializable, IXmlSerializable
[SerializableAttribute] public ref class DataTable : public MarshalByValueComponent, IListSource, ISupportInitializeNotification, ISupportInitialize, ISerializable, IXmlSerializable
/** @attribute SerializableAttribute() */ public class DataTable extends MarshalByValueComponent implements IListSource, ISupportInitializeNotification, ISupportInitialize, ISerializable, IXmlSerializable
SerializableAttribute public class DataTable extends MarshalByValueComponent implements IListSource, ISupportInitializeNotification, ISupportInitialize, ISerializable, IXmlSerializable
NotesDataTable est un objet central dans la bibliothèque ADO.NET. Les autres objets qui utilisent DataTable sont DataSet et DataView.
Lorsque vous accédez à des objets DataTable, remarquez qu'ils respectent la casse dans certaines conditions. Par exemple, si DataTable est appelé "mydatatable" et un autre "Mydatatable", une chaîne utilisée pour rechercher une des deux tables est considérée comme respectant la casse. Cependant, si "mydatatable" existe, mais pas "Mydatatable", la chaîne recherchée est considérée comme ne respectant pas la casse. Un DataSet peut contenir deux objets DataTable qui ont la même valeur de propriété TableName, mais des valeurs de propriété Namespace différentes. Pour plus d'informations sur l'utilisation d'objets DataTable, consultez Création d'un DataTable.
Si vous créez DataTable par programme, vous devez d'abord définir son schéma en ajoutant des objets DataColumn à DataColumnCollection (accessible à l'aide de la propriété Columns). Pour plus d'informations sur l'ajout d'objets DataColumn, consultez Ajout de colonnes à une table.
Pour ajouter des lignes à DataTable, vous devez d'abord utiliser la méthode NewRow pour retourner un nouvel objet DataRow. La méthode NewRow retourne une ligne avec le schéma de DataTable, tel qu'il est défini par le DataColumnCollection de la table. Le nombre maximal de lignes pouvant être stockées dans un DataTable est de 16 777 216. Pour plus d'informations, consultez Ajout de données à une table.
DataTable contient aussi une collection d'objets Constraint qui peuvent être utilisés pour garantir l'intégrité des données. Pour plus d'informations, consultez Ajout de contraintes à une table.
De nombreux événements DataTable peuvent être utilisés pour déterminer quand des modifications sont apportées à une table, notamment : RowChanged, RowChanging, RowDeleting et RowDeleted. Pour plus d'informations sur les événements qui peuvent être utilisés avec un DataTable, consultez Utilisation d'événements DataTable.
Lorsqu'une instance de DataTable est créée, les valeurs initiales de certaines propriétés de lecture/écriture sont rétablies. Pour obtenir la liste de ces valeurs, consultez la rubrique relative au constructeur System.Data.DataTable.
Remarque |
|---|
| Les objets DataSet et DataTable héritent de MarshalByValueComponent et prennent en charge l'interface ISerializable pour l'accès distant du .NET Framework. Ce sont les seuls objets ADO.NET que vous pouvez utiliser pour l'accès distant du .NET Framework. |
ExempleL'exemple suivant crée deux objets DataTable, un objet DataRelation et ajoute les nouveaux objets à DataSet. Les tables sont ensuite affichées dans un contrôle DataGridView.
' Put the next line into the Declarations section. private dataSet As DataSet Private Sub MakeDataTables() ' Run all of the functions. MakeParentTable() MakeChildTable() MakeDataRelation() BindToDataGrid() End Sub Private Sub MakeParentTable() ' Create a new DataTable. Dim table As DataTable = new DataTable("ParentTable") ' Declare variables for DataColumn and DataRow objects. Dim column As DataColumn Dim row As DataRow ' Create new DataColumn, set DataType, ColumnName ' and add to DataTable. column = New DataColumn() column.DataType = System.Type.GetType("System.Int32") column.ColumnName = "id" column.ReadOnly = True column.Unique = True ' Add the Column to the DataColumnCollection. table.Columns.Add(column) ' Create second column. column = New DataColumn() column.DataType = System.Type.GetType("System.String") column.ColumnName = "ParentItem" column.AutoIncrement = False column.Caption = "ParentItem" column.ReadOnly = False column.Unique = False ' Add the column to the table. table.Columns.Add(column) ' Make the ID column the primary key column. Dim PrimaryKeyColumns(0) As DataColumn PrimaryKeyColumns(0)= table.Columns("id") table.PrimaryKey = PrimaryKeyColumns ' Instantiate the DataSet variable. dataSet = New DataSet() ' Add the new DataTable to the DataSet. dataSet.Tables.Add(table) ' Create three new DataRow objects and add ' them to the DataTable Dim i As Integer For i = 0 to 2 row = table.NewRow() row("id") = i row("ParentItem") = "ParentItem " + i.ToString() table.Rows.Add(row) Next i End Sub Private Sub MakeChildTable() ' Create a new DataTable. Dim table As DataTable = New DataTable("childTable") Dim column As DataColumn Dim row As DataRow ' Create first column and add to the DataTable. column = New DataColumn() column.DataType= System.Type.GetType("System.Int32") column.ColumnName = "ChildID" column.AutoIncrement = True column.Caption = "ID" column.ReadOnly = True column.Unique = True ' Add the column to the DataColumnCollection. table.Columns.Add(column) ' Create second column. column = New DataColumn() column.DataType= System.Type.GetType("System.String") column.ColumnName = "ChildItem" column.AutoIncrement = False column.Caption = "ChildItem" column.ReadOnly = False column.Unique = False table.Columns.Add(column) ' Create third column. column = New DataColumn() column.DataType= System.Type.GetType("System.Int32") column.ColumnName = "ParentID" column.AutoIncrement = False column.Caption = "ParentID" column.ReadOnly = False column.Unique = False table.Columns.Add(column) dataSet.Tables.Add(table) ' Create three sets of DataRow objects, five rows each, ' and add to DataTable. Dim i As Integer For i = 0 to 4 row = table.NewRow() row("childID") = i row("ChildItem") = "Item " + i.ToString() row("ParentID") = 0 table.Rows.Add(row) Next i For i = 0 to 4 row = table.NewRow() row("childID") = i + 5 row("ChildItem") = "Item " + i.ToString() row("ParentID") = 1 table.Rows.Add(row) Next i For i = 0 to 4 row = table.NewRow() row("childID") = i + 10 row("ChildItem") = "Item " + i.ToString() row("ParentID") = 2 table.Rows.Add(row) Next i End Sub Private Sub MakeDataRelation() ' DataRelation requires two DataColumn ' (parent and child) and a name. Dim parentColumn As DataColumn = _ dataSet.Tables("ParentTable").Columns("id") Dim childColumn As DataColumn = _ dataSet.Tables("ChildTable").Columns("ParentID") Dim relation As DataRelation = new _ DataRelation("parent2Child", parentColumn, childColumn) dataSet.Tables("ChildTable").ParentRelations.Add(relation) End Sub Private Sub BindToDataGrid() ' Instruct the DataGrid to bind to the DataSet, with the ' ParentTable as the topmost DataTable. DataGrid1.SetDataBinding(dataSet,"ParentTable") End Sub
// Put the next line into the Declarations section. private System.Data.DataSet dataSet; private void MakeDataTables() { // Run all of the functions. MakeParentTable(); MakeChildTable(); MakeDataRelation(); BindToDataGrid(); } private void MakeParentTable() { // Create a new DataTable. System.Data.DataTable table = new DataTable("ParentTable"); // Declare variables for DataColumn and DataRow objects. DataColumn column; DataRow row; // Create new DataColumn, set DataType, // ColumnName and add to DataTable. column = new DataColumn(); column.DataType = System.Type.GetType("System.Int32"); column.ColumnName = "id"; column.ReadOnly = true; column.Unique = true; // Add the Column to the DataColumnCollection. table.Columns.Add(column); // Create second column. column = new DataColumn(); column.DataType = System.Type.GetType("System.String"); column.ColumnName = "ParentItem"; column.AutoIncrement = false; column.Caption = "ParentItem"; column.ReadOnly = false; column.Unique = false; // Add the column to the table. table.Columns.Add(column); // Make the ID column the primary key column. DataColumn[] PrimaryKeyColumns = new DataColumn[1]; PrimaryKeyColumns[0] = table.Columns["id"]; table.PrimaryKey = PrimaryKeyColumns; // Instantiate the DataSet variable. dataSet = new DataSet(); // Add the new DataTable to the DataSet. dataSet.Tables.Add(table); // Create three new DataRow objects and add // them to the DataTable for (int i = 0; i<= 2; i++) { row = table.NewRow(); row["id"] = i; row["ParentItem"] = "ParentItem " + i; table.Rows.Add(row); } } private void MakeChildTable() { // Create a new DataTable. DataTable table = new DataTable("childTable"); DataColumn column; DataRow row; // Create first column and add to the DataTable. column = new DataColumn(); column.DataType= System.Type.GetType("System.Int32"); column.ColumnName = "ChildID"; column.AutoIncrement = true; column.Caption = "ID"; column.ReadOnly = true; column.Unique = true; // Add the column to the DataColumnCollection. table.Columns.Add(column); // Create second column. column = new DataColumn(); column.DataType= System.Type.GetType("System.String"); column.ColumnName = "ChildItem"; column.AutoIncrement = false; column.Caption = "ChildItem"; column.ReadOnly = false; column.Unique = false; table.Columns.Add(column); // Create third column. column = new DataColumn(); column.DataType= System.Type.GetType("System.Int32"); column.ColumnName = "ParentID"; column.AutoIncrement = false; column.Caption = "ParentID"; column.ReadOnly = false; column.Unique = false; table.Columns.Add(column); dataSet.Tables.Add(table); // Create three sets of DataRow objects, // five rows each, and add to DataTable. for(int i = 0; i <= 4; i ++) { row = table.NewRow(); row["childID"] = i; row["ChildItem"] = "Item " + i; row["ParentID"] = 0 ; table.Rows.Add(row); } for(int i = 0; i <= 4; i ++) { row = table.NewRow(); row["childID"] = i + 5; row["ChildItem"] = "Item " + i; row["ParentID"] = 1 ; table.Rows.Add(row); } for(int i = 0; i <= 4; i ++) { row = table.NewRow(); row["childID"] = i + 10; row["ChildItem"] = "Item " + i; row["ParentID"] = 2 ; table.Rows.Add(row); } } private void MakeDataRelation() { // DataRelation requires two DataColumn // (parent and child) and a name. DataColumn parentColumn = dataSet.Tables["ParentTable"].Columns["id"]; DataColumn childColumn = dataSet.Tables["ChildTable"].Columns["ParentID"]; DataRelation relation = new DataRelation("parent2Child", parentColumn, childColumn); dataSet.Tables["ChildTable"].ParentRelations.Add(relation); } private void BindToDataGrid() { // Instruct the DataGrid to bind to the DataSet, with the // ParentTable as the topmost DataTable. dataGrid1.SetDataBinding(dataSet,"ParentTable"); }
Sécurité des threadsCe type est sécurisé pour les opérations de lecture multithread. Vous devez synchroniser les opérations d'écriture.
Plates-formesWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition
Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.
Informations de version.NET Framework
Prise en charge dans : 2.0, 1.1, 1.0.NET Compact Framework
Prise en charge dans : 2.0, 1.0
Voir aussiRéférence
Membres DataTableSystem.Data, espace de noms
Remarque
Outils (masquer)
S'enregistrer
Liste des Membres
Qui est en ligne?
FAQ