DataTable Klasse

Definition

Stellt eine Tabelle mit Daten im Arbeitsspeicher dar.

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
Vererbung
Vererbung
DataTable
Abgeleitet
Attribute
Implementiert

Beispiele

Im folgenden Beispiel werden zwei DataTable Objekte und ein DataRelation Objekt erstellt, und die neuen Objekte werden einer DataSethinzugefügt. Die Tabellen werden dann in einem DataGridView Steuerelement angezeigt.

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

In diesem Beispiel wird veranschaulicht, wie Sie eine DataTable manuell mit bestimmten Schemadefinitionen erstellen:

  • Erstellen Sie mehrere DataTables, und definieren Sie die ersten Spalten.

  • Erstellen Sie die Tabelleneinschränkungen.

  • Fügen Sie die Werte ein, und zeigen Sie die Tabellen an.

  • Erstellen Sie die Ausdrucksspalten, und zeigen Sie die Tabellen an.

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

Hinweise

Dies DataTable ist ein zentrales Objekt in der ADO.NET Bibliothek. Andere Objekte, die die DataTable Elemente DataSet und die DataView.

Beachten Sie beim Zugriff auf DataTable Objekte, dass die Groß-/Kleinschreibung bedingt beachtet wird. Wenn einer DataTable beispielsweise "mydatatable" heißt und ein anderer "Mydatatable" heißt, wird eine Zeichenfolge, die zum Suchen nach einer der Tabellen verwendet wird, als Groß-/Kleinschreibung betrachtet. Wenn jedoch "mydatatable" vorhanden ist und "Mydatatable" nicht vorhanden ist, wird die Suchzeichenfolge als unempfindlich angesehen. A DataSet kann zwei DataTable Objekte enthalten, die denselben TableName Eigenschaftswert haben, aber unterschiedliche Namespace Eigenschaftswerte. Weitere Informationen zum Arbeiten mit DataTable anzuzeigen, Erstellen einer "DataTable".

Wenn Sie ein DataTable programmgesteuertes Erstellen erstellen, müssen Sie zuerst sein Schema definieren, indem Sie der Eigenschaft Objekte DataColumnCollection hinzufügen DataColumn (auf die über die Columns Eigenschaft zugegriffen wird). Weitere Informationen zum Hinzufügen von DataColumn Objekten finden Sie unter Hinzufügen von Spalten zu einer DataTable.

Zum Hinzufügen von Zeilen zu einem DataTable, müssen Sie zuerst die NewRow Methode verwenden, um ein neues DataRow Objekt zurückzugeben. Die NewRow Methode gibt eine Zeile mit dem Schema der DataTableTabelle zurück, wie sie durch die Tabelle DataColumnCollectiondefiniert wird. Die maximale Anzahl von Zeilen, die ein DataTable Speicher speichern kann, beträgt 16.777.216. Weitere Informationen finden Sie unter Hinzufügen von Daten zu einer DataTable.

Dies DataTable enthält auch eine Auflistung von Constraint Objekten, die verwendet werden können, um die Integrität der Daten sicherzustellen. Weitere Informationen finden Sie unter "DataTable Constraints".

Es gibt viele DataTable Ereignisse, die verwendet werden können, um zu bestimmen, wann Änderungen an einer Tabelle vorgenommen werden. Dazu gehören RowChanged, RowChanging, RowDeleting und RowDeleted. Weitere Informationen zu den Ereignissen, die mit einem DataTableEreignis verwendet werden können, finden Sie unter Behandeln von DataTable-Ereignissen.

Wenn eine Instanz erstellt DataTable wird, werden einige der Lese-/Schreibeigenschaften auf Anfangswerte festgelegt. Eine Liste dieser Werte finden Sie im DataTable.DataTable Konstruktorthema.

Hinweis

Die DataSet objekte erben MarshalByValueComponent und DataTable unterstützen die ISerializable Schnittstelle für .NET Framework Remoting. Dies sind die einzigen ADO.NET Objekte, die Sie für .NET Framework Remoting verwenden können.

Sicherheitshinweise

Informationen zur DataSet- und DataTable-Sicherheit finden Sie unter Sicherheitsleitfaden.

Konstruktoren

DataTable()

Initialisiert eine neue Instanz der DataTable-Klasse ohne Argumente.

DataTable(SerializationInfo, StreamingContext)

Initialisiert eine neue Instanz der DataTable-Klasse mit serialisierten Daten.

DataTable(String)

Initialisiert eine neue Instanz der DataTable-Klasse mit dem angegebenen Tabellennamen.

DataTable(String, String)

Initialisiert eine neue Instanz der DataTable-Klasse mit dem angegebenen Tabellennamen und Namespace.

Felder

fInitInProgress

Überprüft, ob die Initialisierung gegenwärtig ausgeführt wird. Die Initialisierung erfolgt zur Laufzeit.

Eigenschaften

CaseSensitive

Gibt an, ob Vergleiche zwischen Zeichenfolgen in der Tabelle unter Berücksichtigung der Groß- und Kleinschreibung ausgeführt werden.

ChildRelations

Ruft die Auflistung untergeordneter Beziehungen für diese DataTable ab.

Columns

Ruft die Auflistung der Spalten ab, die zu dieser Tabelle gehören.

Constraints

Ruft die Auflistung der Einschränkungen ab, die von dieser Tabelle verwaltet werden.

Container

Ruft den Container für die Komponente ab.

(Geerbt von MarshalByValueComponent)
DataSet

Ruft das DataSet ab, zu dem diese Tabelle gehört.

DefaultView

Ruft eine benutzerdefinierte Sicht der Tabelle ab, wobei es sich um eine gefilterte Sicht oder eine Cursorposition handeln kann.

DesignMode

Ruft einen Wert ab, der angibt, ob sich die Komponente gegenwärtig im Entwurfsmodus befindet.

(Geerbt von MarshalByValueComponent)
DisplayExpression

Ruft den Ausdruck ab, der einen Wert für die Darstellung dieser Tabelle auf der Benutzeroberfläche zurückgibt, oder legt diesen fest. Mit der DisplayExpression-Eigenschaft können Sie den Namen dieser Tabelle auf einer Benutzeroberfläche anzeigen.

Events

Ruft die Liste der an diese Komponente angefügten Ereignishandler ab.

(Geerbt von MarshalByValueComponent)
ExtendedProperties

Ruft die Auflistung benutzerdefinierter Benutzerinformationen ab.

HasErrors

Ruft einen Wert ab, der angibt, ob in einer Zeile in einer Tabelle des DataSet, zu dem die Tabelle gehört, Fehler aufgetreten sind.

IsInitialized

Ruft einen Wert ab, der angibt, ob die DataTable initialisiert wurde.

Locale

Ruft die Gebietsschemainformationen ab, die für den Vergleich von Zeichenfolgen in der Tabelle verwendet werden, oder legt diese fest.

MinimumCapacity

Ruft die Ausgangsgröße für diese Tabelle ab oder legt diese fest.

Namespace

Ruft den Namespace für die XML-Darstellung der in der DataTable gespeicherten Daten ab oder legt diesen fest.

ParentRelations

Ruft die Auflistung übergeordneter Beziehungen für diese DataTable ab.

Prefix

Ruft den Namespace für die XML-Darstellung der in der DataTable gespeicherten Daten ab oder legt diesen fest.

PrimaryKey

Ruft ein Array von Spalten ab, die als Primärschlüssel für die Datentabelle verwendet werden, oder legt dieses fest.

RemotingFormat

Ruft das Serialisierungsformat ab oder legt dieses fest.

Rows

Ruft die Auflistung der Zeilen ab, die zu dieser Tabelle gehören.

Site

Ruft eine ISite für den DataTable ab oder legt diese fest.

TableName

Ruft den Namen der DataTable ab oder legt diesen fest.

Methoden

AcceptChanges()

Übernimmt alle Änderungen, die an dieser Tabelle seit dem letzten Aufruf von AcceptChanges() vorgenommen wurden.

BeginInit()

Beginnt die Initialisierung einer DataTable, die in einem Formular oder von einer anderen Komponente verwendet wird. Die Initialisierung erfolgt zur Laufzeit.

BeginLoadData()

Deaktiviert während des Ladens von Daten Benachrichtigungen, Indexverwaltung und Einschränkungen.

Clear()

Löscht alle Daten aus der DataTable.

Clone()

Klont die Struktur der DataTable, einschließlich aller Schemas und Einschränkungen der DataTable.

Compute(String, String)

Berechnet den angegebenen Ausdruck für die aktuellen Zeilen, die die Filterkriterien erfüllen.

Copy()

Kopiert die Struktur und die Daten für diese DataTable.

CreateDataReader()

Gibt einen DataTableReader zurück, der den Daten innerhalb dieser DataTable entspricht.

CreateInstance()

Erstellt eine neue Instanz von DataTable.

Dispose()

Gibt alle vom MarshalByValueComponent verwendeten Ressourcen frei.

(Geerbt von MarshalByValueComponent)
Dispose(Boolean)

Gibt die von MarshalByValueComponent verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei.

(Geerbt von MarshalByValueComponent)
EndInit()

Beendet die Initialisierung einer DataTable, die in einem Formular oder von einer anderen Komponente verwendet wird. Die Initialisierung erfolgt zur Laufzeit.

EndLoadData()

Aktiviert nach dem Laden von Daten Benachrichtigungen, Indexverwaltung und Einschränkungen.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetChanges()

Ruft eine Kopie der DataTable ab, die alle seit dem letzten Laden oder seit dem letzten Aufruf von AcceptChanges() vorgenommenen Änderungen enthält.

GetChanges(DataRowState)

Ruft eine Kopie der DataTable ab, die alle seit dem letzten Laden oder seit dem letzten Aufruf von AcceptChanges() vorgenommenen und durch DataRowState gefilterten Änderungen enthält.

GetDataTableSchema(XmlSchemaSet)

Diese Methode gibt eine XmlSchemaSet-Instanz mit der WSDL (Web Services Description Language) zurück, die die DataTable für Webdienste beschreibt.

GetErrors()

Ruft ein Array von DataRow-Objekten ab, die Fehler enthalten.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetObjectData(SerializationInfo, StreamingContext)

Füllt ein Serialisierungsinformationsobjekt mit den Daten auf, die zum Serialisieren des DataTable erforderlich sind.

GetRowType()

Ruft den Zeilentyp ab.

GetSchema()

Eine Beschreibung dieses Elements finden Sie unter GetSchema().

GetService(Type)

Ruft die Implementierung von IServiceProvider ab.

(Geerbt von MarshalByValueComponent)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
ImportRow(DataRow)

Kopiert eine DataRow in eine DataTable, wobei alle Eigenschafteneinstellungen sowie die ursprünglichen und die aktuellen Werte beibehalten werden.

Load(IDataReader)

Füllt eine DataTable mit Werten aus einer Datenquelle, die den angegebenen IDataReader verwendet. Wenn die DataTable bereits Zeilen enthält, werden die eingehenden Daten aus der Datenquelle mit den vorhandenen Zeilen zusammengeführt.

Load(IDataReader, LoadOption)

Füllt eine DataTable mit Werten aus einer Datenquelle, die den angegebenen IDataReader verwendet. Wenn die DataTable bereits Zeilen enthält, werden die eingehenden Daten gemäß dem Wert des loadOption-Parameters aus der Datenquelle mit den vorhandenen Zeilen zusammengeführt.

Load(IDataReader, LoadOption, FillErrorEventHandler)

Füllt eine DataTable mit Werten aus einer Datenquelle mit dem bereitgestellten IDataReader und unter Verwendung eines Fehlerbehandlungsdelegaten.

LoadDataRow(Object[], Boolean)

Sucht eine bestimmte Zeile und aktualisiert diese. Wenn keine übereinstimmende Zeile gefunden werden kann, wird eine neue Zeile mit den angegebenen Werten erstellt.

LoadDataRow(Object[], LoadOption)

Sucht eine bestimmte Zeile und aktualisiert diese. Wenn keine übereinstimmende Zeile gefunden werden kann, wird eine neue Zeile mit den angegebenen Werten erstellt.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
Merge(DataTable)

Führen Sie die angegebene DataTable mit der aktuellen DataTable zusammen.

Merge(DataTable, Boolean)

Führen Sie die angegebene DataTable mit der aktuellen DataTable zusammen, und geben Sie an, ob die Änderungen in der aktuellen DataTable beibehalten werden sollen.

Merge(DataTable, Boolean, MissingSchemaAction)

Führen Sie die angegebene DataTable mit der aktuellen DataTable zusammen, und geben Sie an, ob die Änderungen in der aktuellen DataTable beibehalten werden sollen und wie das fehlende Schema behandelt werden soll.

NewRow()

Erstellt eine neue DataRow mit dem Schema der Tabelle.

NewRowArray(Int32)

Gibt ein Array von DataRow zurück.

NewRowFromBuilder(DataRowBuilder)

Erstellt eine neue Zeile aus einer vorhandenen Zeile.

OnColumnChanged(DataColumnChangeEventArgs)

Löst das ColumnChanged-Ereignis aus.

OnColumnChanging(DataColumnChangeEventArgs)

Löst das ColumnChanging-Ereignis aus.

OnPropertyChanging(PropertyChangedEventArgs)

Löst das PropertyChanged-Ereignis aus.

OnRemoveColumn(DataColumn)

Benachrichtigt die DataTable, dass eine DataColumn entfernt wird.

OnRowChanged(DataRowChangeEventArgs)

Löst das RowChanged-Ereignis aus.

OnRowChanging(DataRowChangeEventArgs)

Löst das RowChanging-Ereignis aus.

OnRowDeleted(DataRowChangeEventArgs)

Löst das RowDeleted-Ereignis aus.

OnRowDeleting(DataRowChangeEventArgs)

Löst das RowDeleting-Ereignis aus.

OnTableCleared(DataTableClearEventArgs)

Löst das TableCleared-Ereignis aus.

OnTableClearing(DataTableClearEventArgs)

Löst das TableClearing-Ereignis aus.

OnTableNewRow(DataTableNewRowEventArgs)

Löst das TableNewRow-Ereignis aus.

ReadXml(Stream)

Liest mit dem angegebenen DataTable das XML-Schema und die XML-Daten in die Stream.

ReadXml(String)

Liest das XML-Schema und die XML-Daten in die DataTable aus der angegebenen Datei.

ReadXml(TextReader)

Liest mit dem angegebenen DataTable das XML-Schema und die XML-Daten in die TextReader.

ReadXml(XmlReader)

Liest das XML-Schema und die XML-Daten mit dem angegebenen DataTable in die XmlReader.

ReadXmlSchema(Stream)

Liest ein XML-Schema mit dem angegebenen Stream in die DataTable.

ReadXmlSchema(String)

Liest ein XML-Schema aus der angegebenen Datei in die DataTable.

ReadXmlSchema(TextReader)

Liest ein XML-Schema mit dem angegebenen DataTable in die TextReader.

ReadXmlSchema(XmlReader)

Liest ein XML-Schema mit dem angegebenen DataTable in die XmlReader.

ReadXmlSerializable(XmlReader)

Liest aus einem XML-Stream.

RejectChanges()

Führt einen Rollback aller Änderungen durch, die an der Tabelle seit dem Laden oder seit dem letzten Aufruf von AcceptChanges() vorgenommen wurden.

Reset()

Setzt die DataTable auf den ursprünglichen Zustand zurück. Zurücksetzen entfernt alle Daten, Indizes, Beziehungen und Spalten der Tabelle. Wenn ein DataSet ein DataTable umfasst, ist die Tabelle noch ein Teil des DataSet, nachdem die Tabelle zurückgesetzt ist.

Select()

Ruft ein Array aller DataRow-Objekte ab.

Select(String)

Ruft ein Array aller DataRow-Objekte ab, die den Filterkriterien entsprechen.

Select(String, String)

Ruft ein Array aller DataRow-Objekte, die die Filterkriterien erfüllen, in der angegebenen Sortierreihenfolge ab.

Select(String, String, DataViewRowState)

Ruft ein Array aller DataRow-Objekte ab, die die Filterkriterien in der Sortierreihenfolge erfüllen und zum angegebenen Zustand passen.

ToString()

Ruft den TableName und den DisplayExpression, sofern vorhanden, als verkettete Zeichenfolge ab.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
WriteXml(Stream)

Schreibt den aktuellen Inhalt des DataTable mithilfe des angegebenen Stream im XML-Format.

WriteXml(Stream, Boolean)

Schreibt den aktuellen Inhalt des DataTable mithilfe des angegebenen Stream im XML-Format. Legen Sie zum Speichern der Daten für die Tabelle und ihre Nachfolgerelemente den writeHierarchy-Parameter auf true fest.

WriteXml(Stream, XmlWriteMode)

Schreibt im angegebenen DataTable die aktuellen Daten und bei Bedarf das Schema für die XmlWriteMode in die angegebene Datei. Um das Schema zu schreiben, legen Sie den Wert für den mode-Parameter auf WriteSchema fest.

WriteXml(Stream, XmlWriteMode, Boolean)

Schreibt im angegebenen DataTable die aktuellen Daten und bei Bedarf das Schema für die XmlWriteMode in die angegebene Datei. Um das Schema zu schreiben, legen Sie den Wert für den mode-Parameter auf WriteSchema fest. Legen Sie zum Speichern der Daten für die Tabelle und ihre Nachfolgerelemente den writeHierarchy-Parameter auf true fest.

WriteXml(String)

Schreibt den aktuellen Inhalt der DataTable als XML mit der angegebenen Datei.

WriteXml(String, Boolean)

Schreibt den aktuellen Inhalt der DataTable als XML mit der angegebenen Datei. Legen Sie zum Speichern der Daten für die Tabelle und ihre Nachfolgerelemente den writeHierarchy-Parameter auf true fest.

WriteXml(String, XmlWriteMode)

Schreibt mit der angegebenen Datei und im angegebenen DataTable die aktuellen Daten und bei Bedarf das Schema für das XmlWriteMode. Um das Schema zu schreiben, legen Sie den Wert für den mode-Parameter auf WriteSchema fest.

WriteXml(String, XmlWriteMode, Boolean)

Schreibt mit der angegebenen Datei und im angegebenen DataTable die aktuellen Daten und bei Bedarf das Schema für das XmlWriteMode. Um das Schema zu schreiben, legen Sie den Wert für den mode-Parameter auf WriteSchema fest. Legen Sie zum Speichern der Daten für die Tabelle und ihre Nachfolgerelemente den writeHierarchy-Parameter auf true fest.

WriteXml(TextWriter)

Schreibt den aktuellen Inhalt des DataTable mithilfe des angegebenen TextWriter im XML-Format.

WriteXml(TextWriter, Boolean)

Schreibt den aktuellen Inhalt des DataTable mithilfe des angegebenen TextWriter im XML-Format. Legen Sie zum Speichern der Daten für die Tabelle und ihre Nachfolgerelemente den writeHierarchy-Parameter auf true fest.

WriteXml(TextWriter, XmlWriteMode)

Schreibt mit dem angegebenen DataTable und im angegebenen TextWriter die aktuellen Daten und bei Bedarf das Schema für die XmlWriteMode. Um das Schema zu schreiben, legen Sie den Wert für den mode-Parameter auf WriteSchema fest.

WriteXml(TextWriter, XmlWriteMode, Boolean)

Schreibt mit dem angegebenen DataTable und im angegebenen TextWriter die aktuellen Daten und bei Bedarf das Schema für die XmlWriteMode. Um das Schema zu schreiben, legen Sie den Wert für den mode-Parameter auf WriteSchema fest. Legen Sie zum Speichern der Daten für die Tabelle und ihre Nachfolgerelemente den writeHierarchy-Parameter auf true fest.

WriteXml(XmlWriter)

Schreibt den aktuellen Inhalt des DataTable mithilfe des angegebenen XmlWriter im XML-Format.

WriteXml(XmlWriter, Boolean)

Schreibt den aktuellen Inhalt des DataTable mithilfe des angegebenen XmlWriter im XML-Format.

WriteXml(XmlWriter, XmlWriteMode)

Schreibt mit dem angegebenen DataTable und im angegebenen XmlWriter die aktuellen Daten und bei Bedarf das Schema für die XmlWriteMode. Um das Schema zu schreiben, legen Sie den Wert für den mode-Parameter auf WriteSchema fest.

WriteXml(XmlWriter, XmlWriteMode, Boolean)

Schreibt mit dem angegebenen DataTable und im angegebenen XmlWriter die aktuellen Daten und bei Bedarf das Schema für die XmlWriteMode. Um das Schema zu schreiben, legen Sie den Wert für den mode-Parameter auf WriteSchema fest. Legen Sie zum Speichern der Daten für die Tabelle und ihre Nachfolgerelemente den writeHierarchy-Parameter auf true fest.

WriteXmlSchema(Stream)

Schreibt die aktuelle Datenstruktur der DataTable als XML-Schema in den angegebenen Stream.

WriteXmlSchema(Stream, Boolean)

Schreibt die aktuelle Datenstruktur der DataTable als XML-Schema in den angegebenen Stream. Legen Sie zum Speichern des Schemas für die Tabelle und ihre Nachfolgerelemente den writeHierarchy-Parameter auf true fest.

WriteXmlSchema(String)

Schreibt die aktuelle Datenstruktur der DataTable als XML-Schema in die angegebene Datei.

WriteXmlSchema(String, Boolean)

Schreibt die aktuelle Datenstruktur der DataTable als XML-Schema in die angegebene Datei. Legen Sie zum Speichern des Schemas für die Tabelle und ihre Nachfolgerelemente den writeHierarchy-Parameter auf true fest.

WriteXmlSchema(TextWriter)

Schreibt die aktuelle Datenstruktur der DataTable als XML-Schema unter Verwendung des angegebenen TextWriter.

WriteXmlSchema(TextWriter, Boolean)

Schreibt die aktuelle Datenstruktur der DataTable als XML-Schema unter Verwendung des angegebenen TextWriter. Legen Sie zum Speichern des Schemas für die Tabelle und ihre Nachfolgerelemente den writeHierarchy-Parameter auf true fest.

WriteXmlSchema(XmlWriter)

Schreibt die aktuelle Datenstruktur der DataTable als XML-Schema unter Verwendung des angegebenen XmlWriter.

WriteXmlSchema(XmlWriter, Boolean)

Schreibt die aktuelle Datenstruktur der DataTable als XML-Schema unter Verwendung des angegebenen XmlWriter. Legen Sie zum Speichern des Schemas für die Tabelle und ihre Nachfolgerelemente den writeHierarchy-Parameter auf true fest.

Ereignisse

ColumnChanged

Tritt ein, nachdem ein Wert für die angegebene DataColumn in einer DataRow geändert wurde.

ColumnChanging

Tritt ein, wenn ein Wert für die angegebene DataColumn in einer DataRow geändert wird.

Disposed

Fügt einen Ereignishandler hinzu, der auf das Disposed-Ereignis für die Komponente lauscht.

(Geerbt von MarshalByValueComponent)
Initialized

Tritt nach dem Initialisieren der DataTable auf.

RowChanged

Tritt auf, nachdem eine DataRow erfolgreich geändert wurde.

RowChanging

Tritt ein, wenn eine DataRow geändert wird.

RowDeleted

Tritt ein, nachdem eine Zeile in der Tabelle gelöscht wurde.

RowDeleting

Tritt ein, bevor eine Zeile in der Tabelle gelöscht wird.

TableCleared

Tritt ein, nachdem eine DataTable gelöscht wurde.

TableClearing

Tritt ein, wenn eine DataTable gelöscht wird.

TableNewRow

Tritt ein, wenn eine neue DataRow eingefügt wird.

Explizite Schnittstellenimplementierungen

IListSource.ContainsListCollection

Eine Beschreibung dieses Elements finden Sie unter ContainsListCollection.

IListSource.GetList()

Eine Beschreibung dieses Elements finden Sie unter GetList().

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Füllt ein Serialisierungsinformationsobjekt mit den Daten auf, die zum Serialisieren des DataTable erforderlich sind.

IXmlSerializable.GetSchema()

Eine Beschreibung dieses Elements finden Sie unter GetSchema().

IXmlSerializable.ReadXml(XmlReader)

Eine Beschreibung dieses Elements finden Sie unter ReadXml(XmlReader).

IXmlSerializable.WriteXml(XmlWriter)

Eine Beschreibung dieses Elements finden Sie unter WriteXml(XmlWriter).

Erweiterungsmethoden

AsDataView(DataTable)

Erstellt ein LINQ-aktiviertes DataView-Objekt und gibt es zurück.

AsEnumerable(DataTable)

Gibt ein IEnumerable<T>-Objekt zurück, bei dem der generische Parameter T gleich DataRow ist. Dieses Objekt kann in einer LINQ-Ausdrucks- oder Methodenabfrage verwendet werden.

Gilt für

Threadsicherheit

Dieser Typ ist für Multithread-Lesevorgänge sicher. Sie müssen alle Schreibvorgänge synchronisieren.

Siehe auch