DataTable Clase

Definición

Representa una tabla de datos en memoria.

public ref class DataTable : System::ComponentModel::MarshalByValueComponent, System::ComponentModel::IListSource, System::ComponentModel::ISupportInitialize, System::ComponentModel::ISupportInitializeNotification, System::Runtime::Serialization::ISerializable, System::Xml::Serialization::IXmlSerializable
public ref class DataTable
public ref class DataTable : System::ComponentModel::MarshalByValueComponent, System::ComponentModel::IListSource, System::ComponentModel::ISupportInitialize, System::Runtime::Serialization::ISerializable
public ref class DataTable : System::ComponentModel::MarshalByValueComponent, System::ComponentModel::IListSource, System::ComponentModel::ISupportInitializeNotification, System::Runtime::Serialization::ISerializable, System::Xml::Serialization::IXmlSerializable
public class DataTable : System.ComponentModel.MarshalByValueComponent, System.ComponentModel.IListSource, System.ComponentModel.ISupportInitialize, System.ComponentModel.ISupportInitializeNotification, System.Runtime.Serialization.ISerializable, System.Xml.Serialization.IXmlSerializable
public class DataTable
[System.Serializable]
public class DataTable : System.ComponentModel.MarshalByValueComponent, System.ComponentModel.IListSource, System.ComponentModel.ISupportInitialize, System.Runtime.Serialization.ISerializable
[System.Serializable]
public class DataTable : System.ComponentModel.MarshalByValueComponent, System.ComponentModel.IListSource, System.ComponentModel.ISupportInitializeNotification, System.Runtime.Serialization.ISerializable, System.Xml.Serialization.IXmlSerializable
public class DataTable : System.ComponentModel.MarshalByValueComponent, System.ComponentModel.IListSource, System.ComponentModel.ISupportInitializeNotification, System.Runtime.Serialization.ISerializable, System.Xml.Serialization.IXmlSerializable
type DataTable = class
    inherit MarshalByValueComponent
    interface IListSource
    interface ISupportInitialize
    interface ISupportInitializeNotification
    interface ISerializable
    interface IXmlSerializable
type DataTable = class
[<System.Serializable>]
type DataTable = class
    inherit MarshalByValueComponent
    interface IListSource
    interface ISupportInitialize
    interface ISerializable
[<System.Serializable>]
type DataTable = class
    inherit MarshalByValueComponent
    interface IListSource
    interface ISupportInitializeNotification
    interface ISupportInitialize
    interface ISerializable
    interface IXmlSerializable
[<System.Serializable>]
type DataTable = class
    inherit MarshalByValueComponent
    interface IListSource
    interface ISupportInitializeNotification
    interface ISerializable
    interface IXmlSerializable
    interface ISupportInitialize
Public Class DataTable
Inherits MarshalByValueComponent
Implements IListSource, ISerializable, ISupportInitialize, ISupportInitializeNotification, IXmlSerializable
Public Class DataTable
Public Class DataTable
Inherits MarshalByValueComponent
Implements IListSource, ISerializable, ISupportInitialize
Public Class DataTable
Inherits MarshalByValueComponent
Implements IListSource, ISerializable, ISupportInitializeNotification, IXmlSerializable
Herencia
Herencia
DataTable
Derivado
Atributos
Implementaciones

Ejemplos

En el ejemplo siguiente se crean dos DataTable objetos y un DataRelation objeto y se agregan los nuevos objetos a .DataSet A continuación, las tablas se muestran en un DataGridView control .

// 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");
}
' 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 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 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

En este ejemplo se muestra cómo crear una DataTable manualmente con definiciones de esquema específicas:

  • Cree varias DataTables y defina las columnas iniciales.

  • Cree las restricciones de tabla.

  • Inserte los valores y muestre las tablas.

  • Cree las columnas de expresión y muestre las tablas.

using System;
using System.Data;

class Program
{
    static void Main(string[] args)
    {
        // Create two tables and add them into the DataSet
        DataTable orderTable = CreateOrderTable();
        DataTable orderDetailTable = CreateOrderDetailTable();
        DataSet salesSet = new DataSet();
        salesSet.Tables.Add(orderTable);
        salesSet.Tables.Add(orderDetailTable);

        // Set the relations between the tables and create the related constraint.
        salesSet.Relations.Add("OrderOrderDetail", orderTable.Columns["OrderId"], orderDetailTable.Columns["OrderId"], true);

        Console.WriteLine("After creating the foreign key constriant, you will see the following error if inserting order detail with the wrong OrderId: ");
        try
        {
            DataRow errorRow = orderDetailTable.NewRow();
            errorRow[0] = 1;
            errorRow[1] = "O0007";
            orderDetailTable.Rows.Add(errorRow);
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        Console.WriteLine();

        // Insert the rows into the table
        InsertOrders(orderTable);
        InsertOrderDetails(orderDetailTable);

        Console.WriteLine("The initial Order table.");
        ShowTable(orderTable);

        Console.WriteLine("The OrderDetail table.");
        ShowTable(orderDetailTable);

        // Use the Aggregate-Sum on the child table column to get the result.
        DataColumn colSub = new DataColumn("SubTotal", typeof(Decimal), "Sum(Child.LineTotal)");
        orderTable.Columns.Add(colSub);

        // Compute the tax by referencing the SubTotal expression column.
        DataColumn colTax = new DataColumn("Tax", typeof(Decimal), "SubTotal*0.1");
        orderTable.Columns.Add(colTax);

        // If the OrderId is 'Total', compute the due on all orders; or compute the due on this order.
        DataColumn colTotal = new DataColumn("TotalDue", typeof(Decimal), "IIF(OrderId='Total',Sum(SubTotal)+Sum(Tax),SubTotal+Tax)");
        orderTable.Columns.Add(colTotal);

        DataRow row = orderTable.NewRow();
        row["OrderId"] = "Total";
        orderTable.Rows.Add(row);

        Console.WriteLine("The Order table with the expression columns.");
        ShowTable(orderTable);

        Console.WriteLine("Press any key to exit.....");
        Console.ReadKey();
    }

    private static DataTable CreateOrderTable()
    {
        DataTable orderTable = new DataTable("Order");

        // Define one column.
        DataColumn colId = new DataColumn("OrderId", typeof(String));
        orderTable.Columns.Add(colId);

        DataColumn colDate = new DataColumn("OrderDate", typeof(DateTime));
        orderTable.Columns.Add(colDate);

        // Set the OrderId column as the primary key.
        orderTable.PrimaryKey = new DataColumn[] { colId };

        return orderTable;
    }

    private static DataTable CreateOrderDetailTable()
    {
        DataTable orderDetailTable = new DataTable("OrderDetail");

        // Define all the columns once.
        DataColumn[] cols =
        {
            new DataColumn("OrderDetailId", typeof(Int32)),
            new DataColumn("OrderId", typeof(String)),
            new DataColumn("Product", typeof(String)),
            new DataColumn("UnitPrice", typeof(Decimal)),
            new DataColumn("OrderQty", typeof(Int32)),
            new DataColumn("LineTotal", typeof(Decimal), "UnitPrice*OrderQty")
        };

        orderDetailTable.Columns.AddRange(cols);
        orderDetailTable.PrimaryKey = new DataColumn[] { orderDetailTable.Columns["OrderDetailId"] };
        return orderDetailTable;
    }

    private static void InsertOrders(DataTable orderTable)
    {
        // Add one row once.
        DataRow row1 = orderTable.NewRow();
        row1["OrderId"] = "O0001";
        row1["OrderDate"] = new DateTime(2013, 3, 1);
        orderTable.Rows.Add(row1);

        DataRow row2 = orderTable.NewRow();
        row2["OrderId"] = "O0002";
        row2["OrderDate"] = new DateTime(2013, 3, 12);
        orderTable.Rows.Add(row2);

        DataRow row3 = orderTable.NewRow();
        row3["OrderId"] = "O0003";
        row3["OrderDate"] = new DateTime(2013, 3, 20);
        orderTable.Rows.Add(row3);
    }

    private static void InsertOrderDetails(DataTable orderDetailTable)
    {
        // Use an Object array to insert all the rows .
        // Values in the array are matched sequentially to the columns, based on the order in which they appear in the table.
        Object[] rows =
        {
            new Object[] { 1, "O0001", "Mountain Bike", 1419.5, 36 },
            new Object[] { 2, "O0001", "Road Bike", 1233.6, 16 },
            new Object[] { 3, "O0001", "Touring Bike", 1653.3, 32 },
            new Object[] { 4, "O0002", "Mountain Bike", 1419.5, 24 },
            new Object[] { 5, "O0002", "Road Bike", 1233.6, 12 },
            new Object[] { 6, "O0003", "Mountain Bike", 1419.5, 48 },
            new Object[] { 7, "O0003", "Touring Bike", 1653.3, 8 },
        };

        foreach (Object[] row in rows)
        {
            orderDetailTable.Rows.Add(row);
        }
    }

    private static void ShowTable(DataTable table)
    {
        foreach (DataColumn col in table.Columns)
        {
            Console.Write("{0,-14}", col.ColumnName);
        }
        Console.WriteLine();

        foreach (DataRow row in table.Rows)
        {
            foreach (DataColumn col in table.Columns)
            {
                if (col.DataType.Equals(typeof(DateTime)))
                    Console.Write("{0,-14:d}", row[col]);
                else if (col.DataType.Equals(typeof(Decimal)))
                    Console.Write("{0,-14:C}", row[col]);
                else
                    Console.Write("{0,-14}", row[col]);
            }
            Console.WriteLine();
        }
        Console.WriteLine();
    }
}
Imports System.Data

Class Program
   Public Shared Sub Main(args As String())
      ' Create two tables and add them into the DataSet
      Dim orderTable As DataTable = CreateOrderTable()
      Dim orderDetailTable As DataTable = CreateOrderDetailTable()
      Dim salesSet As New DataSet()
      salesSet.Tables.Add(orderTable)
      salesSet.Tables.Add(orderDetailTable)

      ' Set the relations between the tables and create the related constraint.
      salesSet.Relations.Add("OrderOrderDetail", orderTable.Columns("OrderId"), orderDetailTable.Columns("OrderId"), True)

      Console.WriteLine("After creating the foreign key constriant, you will see the following error if inserting order detail with the wrong OrderId: ")
      Try
         Dim errorRow As DataRow = orderDetailTable.NewRow()
         errorRow(0) = 1
         errorRow(1) = "O0007"
         orderDetailTable.Rows.Add(errorRow)
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
      Console.WriteLine()

      ' Insert the rows into the table
      InsertOrders(orderTable)
      InsertOrderDetails(orderDetailTable)

      Console.WriteLine("The initial Order table.")
      ShowTable(orderTable)

      Console.WriteLine("The OrderDetail table.")
      ShowTable(orderDetailTable)

      ' Use the Aggregate-Sum on the child table column to get the result.
      Dim colSub As New DataColumn("SubTotal", GetType([Decimal]), "Sum(Child.LineTotal)")
      orderTable.Columns.Add(colSub)

      ' Compute the tax by referencing the SubTotal expression column.
      Dim colTax As New DataColumn("Tax", GetType([Decimal]), "SubTotal*0.1")
      orderTable.Columns.Add(colTax)

      ' If the OrderId is 'Total', compute the due on all orders; or compute the due on this order.
      Dim colTotal As New DataColumn("TotalDue", GetType([Decimal]), "IIF(OrderId='Total',Sum(SubTotal)+Sum(Tax),SubTotal+Tax)")
      orderTable.Columns.Add(colTotal)

      Dim row As DataRow = orderTable.NewRow()
      row("OrderId") = "Total"
      orderTable.Rows.Add(row)

      Console.WriteLine("The Order table with the expression columns.")
      ShowTable(orderTable)

      Console.WriteLine("Press any key to exit.....")
      Console.ReadKey()
   End Sub

   Private Shared Function CreateOrderTable() As DataTable
      Dim orderTable As New DataTable("Order")

      ' Define one column.
      Dim colId As New DataColumn("OrderId", GetType([String]))
      orderTable.Columns.Add(colId)

      Dim colDate As New DataColumn("OrderDate", GetType(DateTime))
      orderTable.Columns.Add(colDate)

      ' Set the OrderId column as the primary key.
      orderTable.PrimaryKey = New DataColumn() {colId}

      Return orderTable
   End Function

   Private Shared Function CreateOrderDetailTable() As DataTable
      Dim orderDetailTable As New DataTable("OrderDetail")

      ' Define all the columns once.
      Dim cols As DataColumn() = {New DataColumn("OrderDetailId", GetType(Int32)), New DataColumn("OrderId", GetType([String])), New DataColumn("Product", GetType([String])), New DataColumn("UnitPrice", GetType([Decimal])), New DataColumn("OrderQty", GetType(Int32)), New DataColumn("LineTotal", GetType([Decimal]), "UnitPrice*OrderQty")}

      orderDetailTable.Columns.AddRange(cols)
      orderDetailTable.PrimaryKey = New DataColumn() {orderDetailTable.Columns("OrderDetailId")}
      Return orderDetailTable
   End Function

   Private Shared Sub InsertOrders(orderTable As DataTable)
      ' Add one row once.
      Dim row1 As DataRow = orderTable.NewRow()
      row1("OrderId") = "O0001"
      row1("OrderDate") = New DateTime(2013, 3, 1)
      orderTable.Rows.Add(row1)

      Dim row2 As DataRow = orderTable.NewRow()
      row2("OrderId") = "O0002"
      row2("OrderDate") = New DateTime(2013, 3, 12)
      orderTable.Rows.Add(row2)

      Dim row3 As DataRow = orderTable.NewRow()
      row3("OrderId") = "O0003"
      row3("OrderDate") = New DateTime(2013, 3, 20)
      orderTable.Rows.Add(row3)
   End Sub

   Private Shared Sub InsertOrderDetails(orderDetailTable As DataTable)
      ' Use an Object array to insert all the rows .
      ' Values in the array are matched sequentially to the columns, based on the order in which they appear in the table.
      Dim rows As [Object]() = {New [Object]() {1, "O0001", "Mountain Bike", 1419.5, 36}, New [Object]() {2, "O0001", "Road Bike", 1233.6, 16}, New [Object]() {3, "O0001", "Touring Bike", 1653.3, 32}, New [Object]() {4, "O0002", "Mountain Bike", 1419.5, 24}, New [Object]() {5, "O0002", "Road Bike", 1233.6, 12}, New [Object]() {6, "O0003", "Mountain Bike", 1419.5, 48}, _
         New [Object]() {7, "O0003", "Touring Bike", 1653.3, 8}}

      For Each row As [Object]() In rows
         orderDetailTable.Rows.Add(row)
      Next
   End Sub

   Private Shared Sub ShowTable(table As DataTable)
      For Each col As DataColumn In table.Columns
         Console.Write("{0,-14}", col.ColumnName)
      Next
      Console.WriteLine()

      For Each row As DataRow In table.Rows
         For Each col As DataColumn In table.Columns
            If col.DataType.Equals(GetType(DateTime)) Then
               Console.Write("{0,-14:d}", row(col))
            ElseIf col.DataType.Equals(GetType([Decimal])) Then
               Console.Write("{0,-14:C}", row(col))
            Else
               Console.Write("{0,-14}", row(col))
            End If
         Next
         Console.WriteLine()
      Next
      Console.WriteLine()
   End Sub
End Class

Comentarios

DataTable es un objeto central en la biblioteca ADO.NET. Otros objetos que usan incluyen DataTable y DataSet .DataView

Al acceder a DataTable objetos, tenga en cuenta que distinguen mayúsculas de minúsculas condicionales. Por ejemplo, si se DataTable denomina "mydatatable" y otro se denomina "Mydatatable", se considera que una cadena usada para buscar una de las tablas distingue mayúsculas de minúsculas. Sin embargo, si "mydatatable" existe y "Mydatatable" no lo hace, la cadena de búsqueda se considera que no distingue mayúsculas de minúsculas. Un DataSet puede contener dos DataTable objetos que tienen el mismo TableName valor de propiedad, pero valores de propiedad diferentes Namespace . Para obtener más información sobre cómo trabajar con DataTable objetos, vea Creating a DataTable.

Si va a crear un objeto DataTable mediante programación, primero debe definir su esquema agregando DataColumn objetos a ( DataColumnCollection a los que se accede a través de la Columns propiedad ). Para obtener más información sobre cómo agregar DataColumn objetos, vea Agregar columnas a una DataTable.

Para agregar filas a DataTable, primero debe usar el NewRow método para devolver un nuevo DataRow objeto. El NewRow método devuelve una fila con el esquema de DataTable, tal y como se define en la tabla.DataColumnCollection El número máximo de filas que un DataTable puede almacenar es de 16.777.216. Para obtener más información, vea Agregar datos a una DataTable.

DataTable También contiene una colección de Constraint objetos que se pueden usar para garantizar la integridad de los datos. Para obtener más información, consulte Restricciones de DataTable.

Hay muchos DataTable eventos que se pueden usar para determinar cuándo se realizan cambios en una tabla. Entre estos se incluyen los eventos RowChanged, RowChanging, RowDeleting y RowDeleted. Para obtener más información sobre los eventos que se pueden usar con , DataTablevea Control de eventos de DataTable.

Cuando se crea una instancia de DataTable , algunas de las propiedades de lectura y escritura se establecen en valores iniciales. Para obtener una lista de estos valores, consulte el DataTable.DataTable tema constructor.

Nota

Los DataSet objetos y DataTable heredan de MarshalByValueComponent y admiten la ISerializable interfaz para .NET Framework comunicación remota. Estos son los únicos objetos ADO.NET que puede usar para .NET Framework comunicación remota.

Consideraciones de seguridad

Para obtener información sobre la seguridad de DataSet y DataTable, consulte Guía de seguridad.

Constructores

DataTable()

Inicializa una nueva instancia de la clase DataTable sin argumentos.

DataTable(SerializationInfo, StreamingContext)

Inicializa una nueva instancia de la clase DataTable con datos serializados.

DataTable(String)

Inicializa una nueva instancia de la clase DataTable con el nombre de tabla especificado.

DataTable(String, String)

Inicializa una nueva instancia de la clase DataTable utilizando el nombre de tabla y el espacio de nombres especificados.

Campos

fInitInProgress

Comprueba si la inicialización está en curso. La inicialización se produce en tiempo de ejecución.

Propiedades

CaseSensitive

Indica si las comparaciones de cadenas en la tabla distinguen entre mayúsculas y minúsculas.

ChildRelations

Obtiene la colección de relaciones secundarias para este DataTable.

Columns

Obtiene la colección de columnas que pertenecen a esta tabla.

Constraints

Obtiene la colección de restricciones mantenidas por esta tabla.

Container

Obtiene el contenedor del componente.

(Heredado de MarshalByValueComponent)
DataSet

Obtiene el objeto DataSet al que pertenece esta tabla.

DefaultView

Obtiene una vista personalizada de la tabla que puede incluir una vista filtrada o una posición del cursor.

DesignMode

Obtiene un valor que indica si el componente está actualmente en modo de diseño.

(Heredado de MarshalByValueComponent)
DisplayExpression

Obtiene o establece la expresión que devuelve un valor utilizado para representar esta tabla en la interfaz de usuario. La propiedad DisplayExpression permite mostrar el nombre de esta tabla en una interfaz de usuario.

Events

Obtiene la lista de controladores de eventos asociados a este componente.

(Heredado de MarshalByValueComponent)
ExtendedProperties

Obtiene la colección de información personalizada del usuario.

HasErrors

Obtiene un valor que indica si hay errores en cualquier fila de cualquier tabla del DataSet al que pertenece la tabla.

IsInitialized

Obtiene un valor que indica si el objeto DataTable está inicializado.

Locale

Obtiene o establece la información de configuración regional que se utiliza para comparar cadenas de la tabla.

MinimumCapacity

Obtiene o establece el tamaño inicial para esta tabla.

Namespace

Obtiene o establece el espacio de nombres para la representación XML de los datos almacenados en el objeto DataTable.

ParentRelations

Obtiene la colección de relaciones primarias para este DataTable.

Prefix

Obtiene o establece el espacio de nombres para la representación XML de los datos almacenados en el objeto DataTable.

PrimaryKey

Obtiene o establece una matriz de columnas que funcionan como claves principales para la tabla de datos.

RemotingFormat

Obtiene o establece el formato de serialización.

Rows

Obtiene la colección de filas que pertenecen a esta tabla.

Site

Obtiene o establece una interfaz ISite para el objeto DataTable.

TableName

Obtiene o establece el nombre de DataTable.

Métodos

AcceptChanges()

Confirma todos los cambios realizados en esta tabla desde la última vez que se llamó a AcceptChanges().

BeginInit()

Activa la inicialización de un objeto DataTable que se emplea en un formulario o que utiliza otro componente. La inicialización se produce en tiempo de ejecución.

BeginLoadData()

Desactiva notificaciones, mantenimiento de índices y restricciones mientras se cargan datos.

Clear()

Borra el DataTable de todos los datos.

Clone()

Clona la estructura de DataTable, incluidos todos los esquemas y restricciones de DataTable.

Compute(String, String)

Calcula la expresión dada de las filas actuales que cumplen los criterios de filtro.

Copy()

Copia la estructura y los datos para este objeto DataTable.

CreateDataReader()

Devuelve un objeto DataTableReader que corresponde a los datos incluidos en este objeto DataTable.

CreateInstance()

Crea una nueva instancia de DataTable.

Dispose()

Libera todos los recursos que usa MarshalByValueComponent.

(Heredado de MarshalByValueComponent)
Dispose(Boolean)

Libera los recursos no administrados que usa MarshalByValueComponent y, de forma opcional, libera los recursos administrados.

(Heredado de MarshalByValueComponent)
EndInit()

Finaliza la inicialización de un objeto DataTable que se emplea en un formulario o que utiliza otro componente. La inicialización se produce en tiempo de ejecución.

EndLoadData()

Activa notificaciones, mantenimiento de índices y restricciones después de cargar datos.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetChanges()

Obtiene una copia del objeto DataTable que contiene todos los cambios que se le han realizado desde que se cargó o se llamó a AcceptChanges() por última vez.

GetChanges(DataRowState)

Obtiene una copia del objeto DataTable que contiene todos los cambios que se le han realizado desde la última vez que se cargó, o desde que se llamó a AcceptChanges(), filtrado por DataRowState.

GetDataTableSchema(XmlSchemaSet)

Este método devuelve una instancia de XmlSchemaSet que contiene el Lenguaje de descripción de servicios Web (WSDL) que describe DataTable para servicios Web.

GetErrors()

Obtiene una matriz de objetos DataRow que contienen errores.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetObjectData(SerializationInfo, StreamingContext)

Rellena un objeto de información de serialización con los datos necesarios para serializar DataTable.

GetRowType()

Obtiene el tipo de fila.

GetSchema()

Para obtener una descripción de este miembro, vea GetSchema().

GetService(Type)

Obtiene el implementador de IServiceProvider.

(Heredado de MarshalByValueComponent)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
ImportRow(DataRow)

Copia un DataRow en un DataTable conservando los valores de propiedad, así como los valores originales y actuales.

Load(IDataReader)

Rellena un objeto DataTable con valores de un origen de datos utilizando la interfaz IDataReader proporcionada. Si el objeto DataTable ya contiene filas, los datos de entrada del origen de datos se combinan con las filas existentes.

Load(IDataReader, LoadOption)

Rellena un objeto DataTable con valores de un origen de datos utilizando la interfaz IDataReader proporcionada. Si el objeto DataTable ya contiene las filas, los datos de entrada del origen de datos se combinan con las filas existentes conforme al valor del parámetro loadOption.

Load(IDataReader, LoadOption, FillErrorEventHandler)

Rellena un objeto DataTable con valores de un origen de datos utilizando la interfaz IDataReader proporcionada y un delegado de control de errores.

LoadDataRow(Object[], Boolean)

Busca y actualiza una fila específica. Si no encuentra ninguna fila coincidente, se crea una nueva con los valores dados.

LoadDataRow(Object[], LoadOption)

Busca y actualiza una fila específica. Si no encuentra ninguna fila coincidente, se crea una nueva con los valores dados.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
Merge(DataTable)

Combina el objeto DataTable especificado con el objeto DataTable actual.

Merge(DataTable, Boolean)

Combina el objeto DataTable especificado con el objeto DataTable actual, indicando si se deben conservar los cambios en el objeto DataTable actual.

Merge(DataTable, Boolean, MissingSchemaAction)

Combina el objeto DataTable especificado con el objeto DataTable actual, indicando si se van a conservar los cambios y cómo se va a controlar el esquema que falta en el objeto DataTable actual.

NewRow()

Crea un nuevo DataRow con el mismo esquema que la tabla.

NewRowArray(Int32)

Devuelve una matriz de DataRow.

NewRowFromBuilder(DataRowBuilder)

Crea una nueva fila a partir de una existente.

OnColumnChanged(DataColumnChangeEventArgs)

Genera el evento ColumnChanged.

OnColumnChanging(DataColumnChangeEventArgs)

Genera el evento ColumnChanging.

OnPropertyChanging(PropertyChangedEventArgs)

Genera el evento PropertyChanged.

OnRemoveColumn(DataColumn)

Notifica a DataTable que se ha quitado un DataColumn.

OnRowChanged(DataRowChangeEventArgs)

Genera el evento RowChanged.

OnRowChanging(DataRowChangeEventArgs)

Genera el evento RowChanging.

OnRowDeleted(DataRowChangeEventArgs)

Genera el evento RowDeleted.

OnRowDeleting(DataRowChangeEventArgs)

Genera el evento RowDeleting.

OnTableCleared(DataTableClearEventArgs)

Genera el evento TableCleared.

OnTableClearing(DataTableClearEventArgs)

Genera el evento TableClearing.

OnTableNewRow(DataTableNewRowEventArgs)

Genera el evento TableNewRow.

ReadXml(Stream)

Lee los datos y el esquema XML en el objeto DataTable mediante el objeto Stream especificado.

ReadXml(String)

Lee los datos y el esquema XML en el objeto DataTable desde el archivo especificado.

ReadXml(TextReader)

Lee los datos y el esquema XML en el objeto DataTable mediante el objeto TextReader especificado.

ReadXml(XmlReader)

Lee datos y el esquema XML en el objeto DataTable mediante el objeto XmlReader especificado.

ReadXmlSchema(Stream)

Lee un esquema XML en el objeto DataTable utilizando la secuencia especificada.

ReadXmlSchema(String)

Lee un esquema XML en el objeto DataTable desde el archivo especificado.

ReadXmlSchema(TextReader)

Lee un esquema XML en el objeto DataTable utilizando el objeto TextReader especificado.

ReadXmlSchema(XmlReader)

Lee un esquema XML en el objeto DataTable utilizando el objeto XmlReader especificado.

ReadXmlSerializable(XmlReader)

Lee de una secuencia XML.

RejectChanges()

Deshace todos los cambios que se hayan realizado en la tabla desde que se cargó o se llamó a AcceptChanges() por última vez.

Reset()

Restablece el estado original del objeto DataTable. El reinicio quita todos los datos, índices, relaciones y columnas de la tabla. Si un conjunto de datos incluye un DataTable, la tabla todavía formará parte del conjunto de datos una vez restaurada la tabla.

Select()

Obtiene una matriz de todos los objetos DataRow.

Select(String)

Obtiene una matriz de todos los objetos DataRow que coinciden con los criterios de filtro.

Select(String, String)

Obtiene una matriz de todos los objetos DataRow que coinciden con los criterios de filtro, en el criterio de ordenación especificado.

Select(String, String, DataViewRowState)

Obtiene una matriz de todos los objetos DataRow que coinciden con el filtro en el orden de clasificación y que coinciden con el estado especificado.

ToString()

Obtiene TableName y DisplayExpression, si hay alguna, como cadena concatenada.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
WriteXml(Stream)

Escribe el contenido actual de DataTable como datos XML mediante el Stream especificado.

WriteXml(Stream, Boolean)

Escribe el contenido actual de DataTable como datos XML mediante el Stream especificado. Para guardar los datos de la tabla y de todos sus descendientes, establezca el parámetro writeHierarchy en true.

WriteXml(Stream, XmlWriteMode)

Escribe los datos actuales y, de forma opcional, el esquema para el objeto DataTable en el archivo indicado mediante la enumeración XmlWriteMode especificada. Para escribir el esquema, establezca el valor del parámetro mode en WriteSchema.

WriteXml(Stream, XmlWriteMode, Boolean)

Escribe los datos actuales y, de forma opcional, el esquema para el objeto DataTable en el archivo indicado mediante la enumeración XmlWriteMode especificada. Para escribir el esquema, establezca el valor del parámetro mode en WriteSchema. Para guardar los datos de la tabla y de todos sus descendientes, establezca el parámetro writeHierarchy en true.

WriteXml(String)

Escribe el contenido actual del objeto DataTable como elemento XML utilizando el archivo especificado.

WriteXml(String, Boolean)

Escribe el contenido actual del objeto DataTable como elemento XML utilizando el archivo especificado. Para guardar los datos de la tabla y de todos sus descendientes, establezca el parámetro writeHierarchy en true.

WriteXml(String, XmlWriteMode)

Escribe los datos actuales y, de forma opcional, el esquema para el DataTable mediante el archivo y la enumeración XmlWriteMode especificados. Para escribir el esquema, establezca el valor del parámetro mode en WriteSchema.

WriteXml(String, XmlWriteMode, Boolean)

Escribe los datos actuales y, de forma opcional, el esquema para el DataTable mediante el archivo y la enumeración XmlWriteMode especificados. Para escribir el esquema, establezca el valor del parámetro mode en WriteSchema. Para guardar los datos de la tabla y de todos sus descendientes, establezca el parámetro writeHierarchy en true.

WriteXml(TextWriter)

Escribe el contenido actual de DataTable como datos XML mediante el TextWriter especificado.

WriteXml(TextWriter, Boolean)

Escribe el contenido actual de DataTable como datos XML mediante el TextWriter especificado. Para guardar los datos de la tabla y de todos sus descendientes, establezca el parámetro writeHierarchy en true.

WriteXml(TextWriter, XmlWriteMode)

Escribe los datos actuales y, de forma opcional, el esquema para el objeto DataTable mediante el objeto TextWriter y la enumeración XmlWriteMode especificados. Para escribir el esquema, establezca el valor del parámetro mode en WriteSchema.

WriteXml(TextWriter, XmlWriteMode, Boolean)

Escribe los datos actuales y, de forma opcional, el esquema para el objeto DataTable mediante el objeto TextWriter y la enumeración XmlWriteMode especificados. Para escribir el esquema, establezca el valor del parámetro mode en WriteSchema. Para guardar los datos de la tabla y de todos sus descendientes, establezca el parámetro writeHierarchy en true.

WriteXml(XmlWriter)

Escribe el contenido actual de DataTable como datos XML mediante el XmlWriter especificado.

WriteXml(XmlWriter, Boolean)

Escribe el contenido actual de DataTable como datos XML mediante el XmlWriter especificado.

WriteXml(XmlWriter, XmlWriteMode)

Escribe los datos actuales y, de forma opcional, el esquema para el objeto DataTable mediante el objeto XmlWriter y la enumeración XmlWriteMode especificados. Para escribir el esquema, establezca el valor del parámetro mode en WriteSchema.

WriteXml(XmlWriter, XmlWriteMode, Boolean)

Escribe los datos actuales y, de forma opcional, el esquema para el objeto DataTable mediante el objeto XmlWriter y la enumeración XmlWriteMode especificados. Para escribir el esquema, establezca el valor del parámetro mode en WriteSchema. Para guardar los datos de la tabla y de todos sus descendientes, establezca el parámetro writeHierarchy en true.

WriteXmlSchema(Stream)

Escribe en la secuencia especificada la estructura de datos actual del objeto DataTable como esquema XML.

WriteXmlSchema(Stream, Boolean)

Escribe en la secuencia especificada la estructura de datos actual del objeto DataTable como esquema XML. Para guardar el esquema de la tabla y de todos sus descendientes, establezca el parámetro writeHierarchy en true.

WriteXmlSchema(String)

Escribe en el archivo especificado la estructura de datos actual del objeto DataTable como esquema XML.

WriteXmlSchema(String, Boolean)

Escribe en el archivo especificado la estructura de datos actual del objeto DataTable como esquema XML. Para guardar el esquema de la tabla y de todos sus descendientes, establezca el parámetro writeHierarchy en true.

WriteXmlSchema(TextWriter)

Escribe la estructura de datos actual del objeto DataTable como esquema XML, utilizando el objeto TextWriter especificado.

WriteXmlSchema(TextWriter, Boolean)

Escribe la estructura de datos actual del objeto DataTable como esquema XML, utilizando el objeto TextWriter especificado. Para guardar el esquema de la tabla y de todos sus descendientes, establezca el parámetro writeHierarchy en true.

WriteXmlSchema(XmlWriter)

Escribe la estructura de datos actual del objeto DataTable como esquema XML, utilizando el objeto XmlWriter especificado.

WriteXmlSchema(XmlWriter, Boolean)

Escribe la estructura de datos actual del objeto DataTable como esquema XML, utilizando el objeto XmlWriter especificado. Para guardar el esquema de la tabla y de todos sus descendientes, establezca el parámetro writeHierarchy en true.

Eventos

ColumnChanged

Se produce cuando se ha cambiado un valor para el DataColumn especificado de un DataRow.

ColumnChanging

Se produce cuando se ha cambiado un valor para el DataColumn especificado de un DataRow.

Disposed

Agrega un controlador de eventos para escuchar el evento Disposed sobre el componente.

(Heredado de MarshalByValueComponent)
Initialized

Se produce después de inicializar DataTable.

RowChanged

Ocurre después de modificar correctamente una DataRow.

RowChanging

Se produce cuando se cambia un DataRow.

RowDeleted

Se produce después de eliminar una fila de la tabla.

RowDeleting

Se produce cuando se va a eliminar una fila de la tabla.

TableCleared

Se produce después de borrar un objeto DataTable.

TableClearing

Se produce cuando se borra un objeto DataTable.

TableNewRow

Se produce cuando se inserta un nuevo objeto DataRow.

Implementaciones de interfaz explícitas

IListSource.ContainsListCollection

Para obtener una descripción de este miembro, vea ContainsListCollection.

IListSource.GetList()

Para obtener una descripción de este miembro, vea GetList().

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Rellena un objeto de información de serialización con los datos necesarios para serializar DataTable.

IXmlSerializable.GetSchema()

Para obtener una descripción de este miembro, vea GetSchema().

IXmlSerializable.ReadXml(XmlReader)

Para obtener una descripción de este miembro, vea ReadXml(XmlReader).

IXmlSerializable.WriteXml(XmlWriter)

Para obtener una descripción de este miembro, vea WriteXml(XmlWriter).

Métodos de extensión

AsDataView(DataTable)

Crea y devuelve un objeto DataView habilitado para LINQ.

AsEnumerable(DataTable)

Devuelve un objeto IEnumerable<T>, donde el parámetro T genérico es DataRow. Este objeto se puede usar en una consulta de método o expresión LINQ.

Se aplica a

Seguridad para subprocesos

Este tipo es seguro para las operaciones de lectura multiproceso. Debe sincronizar las operaciones de escritura.

Consulte también