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 tabulku DataTable s konkrétními definicemi schématu:

  • Vytvořte více datových table 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

je DataTable centrálním objektem v knihovně ADO.NET. Mezi další objekty, které DataTable používají , patří a DataSet DataView .

Při přístupu k DataTable objektům si všimněte, že podmíněně rozlišují malá a velká písmena. Pokud se například jedna z tabulek jmenuje "mydatatable" a druhá má název "Mydatatable", považuje se řetězec používaný k vyhledávání jedné z tabulek za rozlišování malých a malých DataTable písmen. Pokud však "mojedatatable" existuje a "Mojedatatable" neexistuje, bude se hledaný řetězec považovat za řetězec bez rozlišení velkých a malých písmen. Objekt DataSet může obsahovat dva DataTable objekty, které mají stejnou TableName hodnotu vlastnosti, ale různé hodnoty Namespace vlastností. Další informace o práci s DataTable objekty najdete v tématu Vytvoření datové tabulky.

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

Pokud chcete přidat řádky DataTable do objektu , musíte nejprve pomocí metody vrátit nový NewRow DataRow objekt. Metoda NewRow vrátí řádek se schématem , protože je DataTable definovaná tabulkou DataColumnCollection . Maximální počet řádků, které lze DataTable uložit, je 16 777 216. Další informace najdete v tématu Přidání dat do datové tabulky.

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

Existuje mnoho DataTable událostí, které lze použít k určení, kdy se v tabulce provádí změny. Patří mezi RowChanged ně , , a RowChanging RowDeleting RowDeleted . Další informace o událostech, které lze použít s objektem , najdete v DataTable tématu Zpracování událostí datové tabulky.

Při vytvoření instance se některé vlastnosti čtení a zápisu DataTable nastaví na počáteční hodnoty. Seznam těchto hodnot najdete v tématu DataTable.DataTable konstruktoru.

Poznámka

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

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

Informace o zabezpečení datové sady a datové tabulky najdete v tématu Pokyny k zabezpečení.

Konstruktory

DataTable()

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

DataTable(SerializationInfo, StreamingContext)

Inicializuje novou instanci třídy DataTable s SerializationInfo objektem a StreamingContext .

DataTable(String)

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

DataTable(String, String)

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

Pole

fInitInProgress

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

Vlastnosti

CaseSensitive

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

ChildRelations

Získá kolekci vztahů mezi podřízenými prvky pro tento DataTable objekt .

Columns

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

Constraints

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

Container

Načte kontejner pro komponentu.

(Zděděno od MarshalByValueComponent)
DataSet

Získá , DataSet ke kterému tato tabulka patří.

DefaultView

Získá přizpůsobené zobrazení tabulky, které může obsahovat filtrované zobrazení nebo pozici kurzoru.

DesignMode

Načte hodnotu, která označuje, zda je komponenta aktuálně v režimu návrhu.

(Zděděno od MarshalByValueComponent)
DisplayExpression

Získá nebo nastaví výraz, který vrací 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 součásti.

(Zděděno od MarshalByValueComponent)
ExtendedProperties

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

HasErrors

Získá hodnotu určující, zda jsou v libovolném řádku v libovolné z tabulek tabulky, DataSet do které tabulka patří, chyby.

IsInitialized

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

Locale

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

MinimumCapacity

Získá nebo nastaví počáteční počáteční velikost této tabulky.

Namespace

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

ParentRelations

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

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í ISite pro DataTable .

TableName

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

Metody

AcceptChanges()

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

BeginInit()

Zahájí inicializaci , DataTable která je používána ve formuláři nebo používána jinou komponentou. 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 DataTable objektu , 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 DataTable objekt .

CreateDataReader()

Vrátí DataTableReader hodnotu odpovídající datům v rámci tohoto DataTable parametru .

CreateInstance()

Vytvoří novou instanci položky DataTable.

Dispose()

Uvolní všechny prostředky, které používá MarshalByValueComponent .

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

Uvolní nespravované prostředky používané MarshalByValueComponent a volitelně uvolňuje spravované prostředky.

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

Ukončí inicializaci , DataTable která je používána ve formuláři nebo používána jinou komponentou. K inicializaci dochází v době běhu.

EndLoadData()

Zapne oznámení, údržbu indexu 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 , která obsahuje všechny změny provedené v ní od načtení DataTable nebo AcceptChanges() posledního volání.

GetChanges(DataRowState)

Získá kopii obsahující všechny změny, které v ní byly provedeny od posledního načtení, nebo od volání DataTable AcceptChanges() filtrované 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í funkce hash.

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

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

GetRowType()

Získá typ řádku.

GetSchema()

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

GetService(Type)

Získá implementátora IServiceProvider .

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

Získá Type aktuální instanci.

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

Zkopíruje do DataRow objektu , zachová nastavení všech vlastností a také původní a aktuální DataTable hodnoty.

Load(IDataReader)

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

Load(IDataReader, LoadOption)

Vyplní hodnoty DataTable ze zdroje dat pomocí zadané hodnoty IDataReader . Pokud už objekt obsahuje řádky, příchozí data ze zdroje dat se sloučí s existujícími řádky podle DataTable hodnoty loadOption parametru .

Load(IDataReader, LoadOption, FillErrorEventHandler)

Vyplní DataTable hodnoty ze zdroje dat pomocí zadaného IDataReader objektu pomocí delegáta pro 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ří kopii aktuálního seznamu Object .

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

Sloučí zadaný DataTable s aktuálním DataTable parametrem .

Merge(DataTable, Boolean)

Sloučí zadaný s aktuálním parametrem , který DataTable DataTable určuje, jestli se mají zachovat změny v aktuálním DataTable objektu .

Merge(DataTable, Boolean, MissingSchemaAction)

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

NewRow()

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

NewRowArray(Int32)

Vrátí pole typu DataRow .

NewRowFromBuilder(DataRowBuilder)

Vytvoří nový řádek ze stávajícího řádku.

OnColumnChanged(DataColumnChangeEventArgs)

Vyvolá ColumnChanged událost.

OnColumnChanging(DataColumnChangeEventArgs)

Vyvolá ColumnChanging událost.

OnPropertyChanging(PropertyChangedEventArgs)

Vyvolá PropertyChanged událost.

OnRemoveColumn(DataColumn)

Upozorňuje na DataTable to, že se DataColumn odebírá.

OnRowChanged(DataRowChangeEventArgs)

Vyvolá RowChanged událost.

OnRowChanging(DataRowChangeEventArgs)

Vyvolá RowChanging událost.

OnRowDeleted(DataRowChangeEventArgs)

Vyvolá RowDeleted událost.

OnRowDeleting(DataRowChangeEventArgs)

Vyvolá RowDeleting událost .

OnTableCleared(DataTableClearEventArgs)

Vyvolá TableCleared událost .

OnTableClearing(DataTableClearEventArgs)

Vyvolá TableClearing událost .

OnTableNewRow(DataTableNewRowEventArgs)

Vyvolá TableNewRow událost .

ReadXml(Stream)

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

ReadXml(String)

Přečte ze zadaného souboru schéma XML a data DataTable .

ReadXml(TextReader)

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

ReadXml(XmlReader)

Přečte XML schéma a data do rozhraní DataTable pomocí zadaného XmlReader .

ReadXmlSchema(Stream)

Přečte schéma XML do objektu DataTable pomocí zadaného datového proudu.

ReadXmlSchema(String)

Přečte DataTable ze zadaného souboru schéma XML.

ReadXmlSchema(TextReader)

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

ReadXmlSchema(XmlReader)

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

ReadXmlSerializable(XmlReader)

Čte z datového proudu XML.

RejectChanges()

Vrátí zpět všechny změny, které byly provedeny v tabulce od doby, kdy byla načtena, nebo čas posledního AcceptChanges() volání.

Reset()

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

Select()

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

Select(String)

Získá pole všech DataRow objektů, které odpovídají kritériím 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ídá zadanému stavu.

ToString()

Získá TableName a DisplayExpression , pokud je jeden 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 souboru DataTable as XML pomocí zadaného typu Stream .

WriteXml(Stream, Boolean)

Zapíše aktuální obsah souboru DataTable ve formátu XML pomocí zadané hodnoty Stream . 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 zadaného DataTable souboru pomocí zadaného XmlWriteMode . Pokud chcete schéma zapsat, nastavte hodnotu mode parametru na WriteSchema .

WriteXml(Stream, XmlWriteMode, Boolean)

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

WriteXml(String)

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

WriteXml(String, Boolean)

Zapíše aktuální obsah souboru ve DataTable formátu 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í zadaného souboru a DataTable XmlWriteMode . Pokud chcete schéma zapsat, nastavte hodnotu mode parametru na WriteSchema .

WriteXml(String, XmlWriteMode, Boolean)

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

WriteXml(TextWriter)

Zapíše aktuální obsah souboru DataTable as XML pomocí zadaného typu TextWriter .

WriteXml(TextWriter, Boolean)

Zapíše aktuální obsah souboru DataTable ve formátu XML pomocí zadané hodnoty TextWriter . 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 pomocí DataTable zadaných a TextWriter XmlWriteMode . Pokud chcete schéma zapsat, nastavte hodnotu mode parametru na WriteSchema .

WriteXml(TextWriter, XmlWriteMode, Boolean)

Zapíše aktuální data a případně schéma pro DataTable pomocí zadaného TextWriter a XmlWriteMode . Chcete-li zapsat schéma, nastavte hodnotu mode parametru na WriteSchema . Chcete-li uložit data pro tabulku a všechny její potomky, nastavte writeHierarchy parametr na true .

WriteXml(XmlWriter)

Zapíše aktuální obsah souboru DataTable as XML pomocí zadaného typu XmlWriter .

WriteXml(XmlWriter, Boolean)

Zapíše aktuální obsah souboru DataTable ve formátu XML pomocí zadané hodnoty XmlWriter .

WriteXml(XmlWriter, XmlWriteMode)

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

WriteXml(XmlWriter, XmlWriteMode, Boolean)

Zapíše aktuální data a případně schéma pro DataTable pomocí zadaného XmlWriter a XmlWriteMode . Chcete-li zapsat schéma, nastavte hodnotu mode parametru na WriteSchema . Chcete-li uložit data pro tabulku a všechny její potomky, nastavte writeHierarchy parametr na true .

WriteXmlSchema(Stream)

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

WriteXmlSchema(Stream, Boolean)

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

WriteXmlSchema(String)

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

WriteXmlSchema(String, Boolean)

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

WriteXmlSchema(TextWriter)

Zapíše aktuální datovou strukturu DataTable jako schématu XML pomocí zadaného TextWriter .

WriteXmlSchema(TextWriter, Boolean)

Zapíše aktuální datovou strukturu DataTable jako schématu XML pomocí zadaného TextWriter . Chcete-li uložit schéma pro tabulku a všechny její potomky, nastavte writeHierarchy parametr na true .

WriteXmlSchema(XmlWriter)

Zapíše aktuální datovou strukturu DataTable jako schématu XML pomocí zadaného XmlWriter .

WriteXmlSchema(XmlWriter, Boolean)

Zapíše aktuální datovou strukturu DataTable jako schématu XML pomocí zadaného XmlWriter . Chcete-li uložit schéma pro tabulku a všechny její potomky, nastavte writeHierarchy parametr na true .

Události

ColumnChanged

Vyvolá se po změně hodnoty pro zadanou DataColumn hodnotu DataRow v .

ColumnChanging

Nastane, když se mění hodnota pro DataColumn zadanou hodnotu DataRow v .

Disposed

Přidá obslužnou rutinu události, která bude naslouchat Disposed události v součásti.

(Zděděno od MarshalByValueComponent)
Initialized

Vyvolá se po DataTable inicializaci .

RowChanged

Nastane po DataRow úspěšném provedení změny.

RowChanging

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

RowDeleted

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

RowDeleting

Vyvolá se před tím, než se odstraní řádek v tabulce.

TableCleared

Vyvolá se po DataTable vymazání.

TableClearing

Vyvolá se v případě, že DataTable je vymazáno.

TableNewRow

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

Explicitní implementace rozhraní

IListSource.ContainsListCollection

Popis tohoto člena naleznete v tématu ContainsListCollection .

IListSource.GetList()

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

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Naplní objekt informací o serializaci daty potřebnými k serializaci DataTable .

IXmlSerializable.GetSchema()

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

IXmlSerializable.ReadXml(XmlReader)

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

IXmlSerializable.WriteXml(XmlWriter)

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

Metody rozšíření

AsDataView(DataTable)

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

AsEnumerable(DataTable)

Vrátí IEnumerable<T> objekt, kde je obecný parametr T DataRow . Tento objekt lze použít ve výrazu LINQ nebo v 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é