DataTable Třída

Definice

Představuje jednu tabulku dat v paměti.

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
Dědičnost
Dědičnost
DataTable
Odvozené
Atributy
Implementuje

Příklady

Následující příklad vytvoří dva DataTable objekty a jeden DataRelation objekt a přidá nové objekty do objektu DataSet. Tabulky se pak zobrazí v ovládacím DataGridView prvku.

// 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

Tato ukázka ukazuje, jak ručně vytvořit DataTable s konkrétními definicemi schématu:

  • Vytvořte několik tabulek DataTable a definujte počáteční sloupce.

  • Vytvořte omezení tabulky.

  • Vložte hodnoty a zobrazte tabulky.

  • Vytvořte sloupce výrazů a zobrazte tabulky.

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

Poznámky

Objekt DataTable je centrální objekt v knihovně ADO.NET. Další objekty, které používají DataTable , zahrnují a DataSetDataView.

Při přístupu k objektům DataTable mějte na paměti, že podmíněně rozlišují malá a velká písmena. Pokud má například jedna tabulka DataTable název "mojedatatable" a druhá má název "Mydatatable", řetězec použitý k vyhledání jedné z tabulek se považuje za rozlišují se malá a velká písmena. Pokud však "mydatatable" existuje a "Mydatatable" nikoli, hledaný řetězec se považuje za nerozlišující malá a velká písmena. Objekt DataSet může obsahovat dva DataTable objekty, které mají stejnou TableName hodnotu vlastnosti, ale odlišné Namespace hodnoty vlastností. Další informace o práci s DataTable objekty najdete v tématu Vytvoření tabulky DataTable.

Pokud vytváříte DataTable objekt programově, musíte nejprve definovat jeho schéma přidáním DataColumn objektů do objektu DataColumnCollection (přístupného Columns prostřednictvím vlastnosti ). Další informace o přidávání DataColumn objektů najdete v tématu Přidání sloupců do tabulky DataTable.

Chcete-li přidat řádky do objektu DataTable, musíte nejprve použít metodu NewRow k vrácení nového DataRow objektu. Metoda NewRow vrátí řádek se schématem DataTable, protože je definovaný tabulkou DataColumnCollection. Maximální počet řádků, které může uložit DataTable , je 16 777 216. Další informace najdete v tématu Přidání dat do tabulky DataTable.

Obsahuje DataTable také kolekci Constraint objektů, které lze použít k zajištění integrity dat. Další informace najdete v tématu Omezení tabulky DataTable.

Existuje mnoho DataTable událostí, které lze použít k určení, kdy jsou provedeny změny v tabulce. Patří mezi ně RowChanged, RowChanging, RowDeletinga RowDeleted. Další informace o událostech, které se dají použít s , najdete v DataTabletématu Zpracování událostí datatable.

Při vytvoření instance objektu DataTable jsou některé vlastnosti pro čtení a zápis nastaveny na počáteční hodnoty. Seznam těchto hodnot najdete v tématu konstruktoru DataTable.DataTable .

Poznámka

Objekty DataSet a DataTable dědí z MarshalByValueComponent rozhraní vzdálené komunikace rozhraní .NET Framework a podporují ho ISerializable . Jedná se o jediné objekty ADO.NET, které můžete použít pro vzdálené komunikace rozhraní .NET Framework.

Důležité informace o zabezpečení

Informace o zabezpečení datové sady a tabulky DataTable najdete v tématu Doprovodné materiály k zabezpečení.

Konstruktory

DataTable()

Inicializuje novou instanci DataTable třídy bez argumentů.

DataTable(SerializationInfo, StreamingContext)
Zastaralé.

Inicializuje novou instanci třídy DataTable se serializovanými daty.

DataTable(String)

Inicializuje novou instanci DataTable třídy se zadaným názvem tabulky.

DataTable(String, String)

Inicializuje novou instanci DataTable třídy pomocí zadaného názvu tabulky a oboru názvů.

Pole

fInitInProgress

Zkontroluje, jestli probíhá inicializace. K inicializaci dochází v době běhu.

Vlastnosti

CaseSensitive

Určuje, jestli porovnání řetězců v tabulce rozlišují velká a malá písmena.

ChildRelations

Získá kolekci podřízených vztahů pro tento DataTable.

Columns

Získá kolekci sloupců, které patří do této tabulky.

Constraints

Získá kolekci omezení udržovaných touto tabulkou.

Container

Získá kontejner pro komponentu.

(Zděděno od MarshalByValueComponent)
DataSet

Získá, DataSet do kterého tato tabulka patří.

DefaultView

Získá vlastní zobrazení tabulky, která může obsahovat filtrované zobrazení nebo pozici kurzoru.

DesignMode

Získá hodnotu označující, zda komponenta je aktuálně v režimu návrhu.

(Zděděno od MarshalByValueComponent)
DisplayExpression

Získá nebo nastaví výraz, který vrátí hodnotu použitou k reprezentaci této tabulky v uživatelském rozhraní. Vlastnost DisplayExpression umožňuje zobrazit název této tabulky v uživatelském rozhraní.

Events

Získá seznam obslužných rutin událostí, které jsou připojeny k této komponentě.

(Zděděno od MarshalByValueComponent)
ExtendedProperties

Získá kolekci přizpůsobených informací o uživateli.

HasErrors

Získá hodnotu označující, zda existují chyby v některém z řádků v některé z DataSet tabulek, do které patří tabulka.

IsInitialized

Získá hodnotu, která označuje, zda DataTable je inicializován.

Locale

Získá nebo nastaví informace o národním prostředí použité k porovnání řetězců v tabulce.

MinimumCapacity

Získá nebo nastaví počáteční počáteční velikost pro tuto tabulku.

Namespace

Získá nebo nastaví obor názvů pro reprezentaci XML dat uložených v DataTable.

ParentRelations

Získá kolekci nadřazených vztahů pro tento DataTableobjekt .

Prefix

Získá nebo nastaví obor názvů pro reprezentaci XML dat uložených v DataTable.

PrimaryKey

Získá nebo nastaví pole sloupců, které fungují jako primární klíče pro tabulku dat.

RemotingFormat

Získá nebo nastaví formát serializace.

Rows

Získá kolekci řádků, které patří do této tabulky.

Site

Získá nebo nastaví pro ISiteDataTable.

TableName

Získá nebo nastaví název objektu DataTable.

Metody

AcceptChanges()

Potvrdí všechny změny provedené v této tabulce od posledního AcceptChanges() zavolání.

BeginInit()

Zahájí inicializaci objektu DataTable , který se používá ve formuláři nebo používá jiná komponenta. K inicializaci dochází v době běhu.

BeginLoadData()

Vypne oznámení, údržbu indexů a omezení při načítání dat.

Clear()

Vymaže DataTable všechna data.

Clone()

Naklonuje strukturu objektu DataTable, včetně všech DataTable schémat a omezení.

Compute(String, String)

Vypočítá daný výraz na aktuálních řádcích, které splňují kritéria filtru.

Copy()

Zkopíruje strukturu i data pro tento DataTableobjekt .

CreateDataReader()

Vrátí odpovídající DataTableReader datům v tomto DataTableobjektu .

CreateInstance()

Vytvoří novou instanci položky DataTable.

Dispose()

Uvolní všechny prostředky používané nástrojem MarshalByValueComponent.

(Zděděno od MarshalByValueComponent)
Dispose(Boolean)

Uvolní nespravované prostředky používané MarshalByValueComponent nástrojem a volitelně uvolní spravované prostředky.

(Zděděno od MarshalByValueComponent)
EndInit()

Ukončí inicializaci objektu DataTable , který se používá ve formuláři nebo používá jiná komponenta. K inicializaci dochází v době běhu.

EndLoadData()

Zapne oznámení, údržbu indexů a omezení po načtení dat.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetChanges()

Získá kopii DataTable , která obsahuje všechny změny provedené od jeho načtení nebo AcceptChanges() byl naposledy volána.

GetChanges(DataRowState)

Získá kopii DataTable obsahující všechny změny provedené od posledního načtení, nebo od doby, kdy AcceptChanges() byla volána, filtrována podle DataRowState.

GetDataTableSchema(XmlSchemaSet)

Tato metoda vrátí XmlSchemaSet instanci obsahující wsDL (Web Services Description Language), který popisuje DataTable pro webové služby.

GetErrors()

Získá pole DataRow objektů, které obsahují chyby.

GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetObjectData(SerializationInfo, StreamingContext)
Zastaralé.

Naplní objekt serializace informací dat potřebných k serializaci objektu DataTable.

GetRowType()

Získá typ řádku.

GetSchema()

Popis tohoto člena najdete v tématu GetSchema().

GetService(Type)

Získá implementátor nástroje IServiceProvider.

(Zděděno od MarshalByValueComponent)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
ImportRow(DataRow)

Zkopíruje objekt DataRow do objektu DataTablese zachováním všech nastavení vlastností a také původních a aktuálních hodnot.

Load(IDataReader)

DataTable Vyplní hodnotu hodnotami ze zdroje dat pomocí zadané IDataReaderhodnoty . DataTable Pokud již obsahuje řádky, příchozí data ze zdroje dat se sloučí s existujícími řádky.

Load(IDataReader, LoadOption)

DataTable Vyplní hodnotu hodnotami ze zdroje dat pomocí zadané IDataReaderhodnoty . DataTable Pokud již obsahuje řádky, jsou příchozí data ze zdroje dat sloučena s existujícími řádky podle hodnoty parametruloadOption.

Load(IDataReader, LoadOption, FillErrorEventHandler)

DataTable Vyplní hodnoty ze zdroje dat pomocí zadaného IDataReader delegáta zpracování chyb.

LoadDataRow(Object[], Boolean)

Najde a aktualizuje konkrétní řádek. Pokud není nalezen žádný odpovídající řádek, je vytvořen nový řádek s použitím zadaných hodnot.

LoadDataRow(Object[], LoadOption)

Najde a aktualizuje konkrétní řádek. Pokud není nalezen žádný odpovídající řádek, je vytvořen nový řádek s použitím zadaných hodnot.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
Merge(DataTable)

Sloučit zadaný DataTable s aktuální DataTable.

Merge(DataTable, Boolean)

Sloučí zadanou DataTable hodnotu s aktuální DataTablehodnotou , která určuje, zda se mají zachovat změny v aktuálním DataTablesouboru .

Merge(DataTable, Boolean, MissingSchemaAction)

Sloučí zadaný DataTable s aktuálním DataTableparametrem , který určuje, jestli se mají zachovat změny a jak zpracovat chybějící schéma v aktuálním DataTable.

NewRow()

Vytvoří nový DataRow se stejným schématem jako tabulka.

NewRowArray(Int32)

Vrátí matici .DataRow

NewRowFromBuilder(DataRowBuilder)

Vytvoří nový řádek z existujícího řádku.

OnColumnChanged(DataColumnChangeEventArgs)

ColumnChanged Vyvolá událost.

OnColumnChanging(DataColumnChangeEventArgs)

ColumnChanging Vyvolá událost.

OnPropertyChanging(PropertyChangedEventArgs)

PropertyChanged Vyvolá událost.

OnRemoveColumn(DataColumn)

Upozorní uživatele, DataTable že DataColumn se odebírá.

OnRowChanged(DataRowChangeEventArgs)

RowChanged Vyvolá událost.

OnRowChanging(DataRowChangeEventArgs)

RowChanging Vyvolá událost.

OnRowDeleted(DataRowChangeEventArgs)

RowDeleted Vyvolá událost.

OnRowDeleting(DataRowChangeEventArgs)

RowDeleting Vyvolá událost.

OnTableCleared(DataTableClearEventArgs)

TableCleared Vyvolá událost.

OnTableClearing(DataTableClearEventArgs)

TableClearing Vyvolá událost.

OnTableNewRow(DataTableNewRowEventArgs)

TableNewRow Vyvolá událost.

ReadXml(Stream)

Načte schéma XML a data do objektu DataTable pomocí zadaného Streamobjektu .

ReadXml(String)

Načte schéma XML a data ze DataTable zadaného souboru.

ReadXml(TextReader)

Načte schéma XML a data do objektu DataTable pomocí zadaného TextReaderobjektu .

ReadXml(XmlReader)

Načte schéma XML a data do objektu DataTable pomocí zadaného XmlReaderobjektu .

ReadXmlSchema(Stream)

Načte schéma XML do datového DataTable proudu pomocí zadaného datového proudu.

ReadXmlSchema(String)

Načte schéma XML ze DataTable zadaného souboru.

ReadXmlSchema(TextReader)

Načte schéma XML do objektu DataTable pomocí zadaného TextReaderobjektu .

ReadXmlSchema(XmlReader)

Načte schéma XML do objektu DataTable pomocí zadaného XmlReaderobjektu .

ReadXmlSerializable(XmlReader)

Čte z datového proudu XML.

RejectChanges()

Vrátí zpět všechny změny provedené v tabulce od načtení nebo posledního AcceptChanges() zavolání.

Reset()

DataTable Obnoví původní stav. Resetování odebere všechna data, indexy, relace a sloupce tabulky. Pokud datová sada obsahuje tabulku DataTable, bude tabulka stále součástí datové sady i po resetování tabulky.

Select()

Získá pole všech DataRow objektů.

Select(String)

Získá pole všech DataRow objektů, které splňují kritéria filtru.

Select(String, String)

Získá pole všech DataRow objektů, které odpovídají kritériím filtru v zadaném pořadí řazení.

Select(String, String, DataViewRowState)

Získá pole všech DataRow objektů, které odpovídají filtru v pořadí řazení, které odpovídají zadanému stavu.

ToString()

TableName Získá a DisplayExpression, pokud existuje jako zřetězený řetězec.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
WriteXml(Stream)

Zapíše aktuální obsah objektu DataTable jako XML pomocí zadaného Streamobjektu .

WriteXml(Stream, Boolean)

Zapíše aktuální obsah objektu DataTable jako XML pomocí zadaného Streamobjektu . Pokud chcete uložit data pro tabulku a všechny její potomky, nastavte writeHierarchy parametr na true.

WriteXml(Stream, XmlWriteMode)

Zapíše aktuální data a volitelně schéma pro do DataTable zadaného souboru pomocí zadaného XmlWriteModesouboru . Pokud chcete zapsat schéma, nastavte hodnotu parametru mode na WriteSchema.

WriteXml(Stream, XmlWriteMode, Boolean)

Zapíše aktuální data a volitelně schéma pro do DataTable zadaného souboru pomocí zadaného XmlWriteModesouboru . Pokud chcete zapsat schéma, nastavte hodnotu parametru mode na WriteSchema. Pokud chcete uložit data pro tabulku a všechny její potomky, nastavte writeHierarchy parametr na true.

WriteXml(String)

Zapíše aktuální obsah objektu DataTable jako XML pomocí zadaného souboru.

WriteXml(String, Boolean)

Zapíše aktuální obsah objektu DataTable jako XML pomocí zadaného souboru. Pokud chcete uložit data pro tabulku a všechny její potomky, nastavte writeHierarchy parametr na true.

WriteXml(String, XmlWriteMode)

Zapíše aktuální data a volitelně schéma pro pomocí DataTable zadaného souboru a XmlWriteMode. Pokud chcete zapsat schéma, nastavte hodnotu parametru mode na WriteSchema.

WriteXml(String, XmlWriteMode, Boolean)

Zapíše aktuální data a volitelně schéma pro pomocí DataTable zadaného souboru a XmlWriteMode. Pokud chcete zapsat schéma, nastavte hodnotu parametru mode na WriteSchema. Pokud chcete uložit data pro tabulku a všechny její potomky, nastavte writeHierarchy parametr na true.

WriteXml(TextWriter)

Zapíše aktuální obsah objektu DataTable jako XML pomocí zadaného TextWriterobjektu .

WriteXml(TextWriter, Boolean)

Zapíše aktuální obsah objektu DataTable jako XML pomocí zadaného TextWriterobjektu . Pokud chcete uložit data pro tabulku a všechny její potomky, nastavte writeHierarchy parametr na true.

WriteXml(TextWriter, XmlWriteMode)

Zapíše aktuální data a volitelně schéma pro DataTable pomocí zadaných TextWriter a XmlWriteMode. Pokud chcete zapsat schéma, nastavte hodnotu parametru mode na WriteSchema.

WriteXml(TextWriter, XmlWriteMode, Boolean)

Zapíše aktuální data a volitelně schéma pro DataTable pomocí zadaných TextWriter a XmlWriteMode. Pokud chcete zapsat schéma, nastavte hodnotu parametru mode na WriteSchema. Pokud chcete uložit data pro tabulku a všechny její potomky, nastavte writeHierarchy parametr na true.

WriteXml(XmlWriter)

Zapíše aktuální obsah objektu DataTable jako XML pomocí zadaného XmlWriterobjektu .

WriteXml(XmlWriter, Boolean)

Zapíše aktuální obsah objektu DataTable jako XML pomocí zadaného XmlWriterobjektu .

WriteXml(XmlWriter, XmlWriteMode)

Zapíše aktuální data a volitelně schéma pro DataTable pomocí zadaných XmlWriter a XmlWriteMode. Pokud chcete zapsat schéma, nastavte hodnotu parametru mode na WriteSchema.

WriteXml(XmlWriter, XmlWriteMode, Boolean)

Zapíše aktuální data a volitelně schéma pro DataTable pomocí zadaných XmlWriter a XmlWriteMode. Pokud chcete zapsat schéma, nastavte hodnotu parametru mode na WriteSchema. Pokud chcete uložit data pro tabulku a všechny její potomky, nastavte writeHierarchy parametr na true.

WriteXmlSchema(Stream)

Zapíše aktuální datovou strukturu objektu DataTable jako schéma XML do zadaného datového proudu.

WriteXmlSchema(Stream, Boolean)

Zapíše aktuální datovou strukturu objektu DataTable jako schéma XML do zadaného datového proudu. Pokud chcete uložit schéma pro tabulku a všechny její potomky, nastavte writeHierarchy parametr na true.

WriteXmlSchema(String)

Zapíše aktuální datovou strukturu objektu DataTable jako schéma XML do zadaného souboru.

WriteXmlSchema(String, Boolean)

Zapíše aktuální datovou strukturu objektu DataTable jako schéma XML do zadaného souboru. Pokud chcete uložit schéma pro tabulku a všechny její potomky, nastavte writeHierarchy parametr na true.

WriteXmlSchema(TextWriter)

Zapíše aktuální datovou strukturu objektu DataTable jako schéma XML pomocí zadaného TextWriterobjektu .

WriteXmlSchema(TextWriter, Boolean)

Zapíše aktuální datovou strukturu objektu DataTable jako schéma XML pomocí zadaného TextWriterobjektu . Pokud chcete uložit schéma pro tabulku a všechny její potomky, nastavte writeHierarchy parametr na true.

WriteXmlSchema(XmlWriter)

Zapíše aktuální datovou strukturu objektu DataTable jako schéma XML pomocí zadaného XmlWriterobjektu .

WriteXmlSchema(XmlWriter, Boolean)

Zapíše aktuální datovou strukturu objektu DataTable jako schéma XML pomocí zadaného XmlWriterobjektu . Pokud chcete uložit schéma pro tabulku a všechny její potomky, nastavte writeHierarchy parametr na true.

Událost

ColumnChanged

Nastane po změně hodnoty zadané DataColumn v DataRowsouboru .

ColumnChanging

Nastane, když se mění hodnota pro zadanou DataColumnDataRowv .

Disposed

Přidá obslužnou rutinu události pro naslouchání Disposed události v komponentě.

(Zděděno od MarshalByValueComponent)
Initialized

Nastane po DataTable inicializaci.

RowChanged

Nastane po úspěšné změně objektu DataRow .

RowChanging

Vyvolá se při DataRow změně.

RowDeleted

Vyvolá se po odstranění řádku v tabulce.

RowDeleting

Nastane před odstraněním řádku v tabulce.

TableCleared

Vyvolá se po DataTable vymazání.

TableClearing

Vyvolá se při DataTable vymazání.

TableNewRow

Vyvolá se při vložení nového DataRow .

Explicitní implementace rozhraní

IListSource.ContainsListCollection

Popis tohoto člena najdete v tématu ContainsListCollection.

IListSource.GetList()

Popis tohoto člena najdete v tématu GetList().

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Naplní objekt serializace informací dat potřebnými k serializaci objektu DataTable.

IXmlSerializable.GetSchema()

Popis tohoto člena najdete v tématu GetSchema().

IXmlSerializable.ReadXml(XmlReader)

Popis tohoto člena najdete v tématu ReadXml(XmlReader).

IXmlSerializable.WriteXml(XmlWriter)

Popis tohoto člena najdete v tématu WriteXml(XmlWriter).

Metody rozšíření

AsDataView(DataTable)

Vytvoří a vrátí objekt s podporou DataView LINQ.

AsEnumerable(DataTable)

IEnumerable<T> Vrátí objekt, kde obecný parametr T je DataRow. Tento objekt lze použít ve výrazu LINQ nebo dotazu metody.

Platí pro

Bezpečný přístup z více vláken

Tento typ je bezpečný pro operace čtení ve více vláknech. Je nutné synchronizovat všechny operace zápisu.

Viz také