(0) exportieren Drucken
Alle erweitern

DataTable-Klasse

Stellt eine Tabelle mit im Arbeitsspeicher befindlichen Daten dar.

Namespace: System.Data
Assembly: System.Data (in system.data.dll)

[SerializableAttribute] 
public class DataTable : MarshalByValueComponent, IListSource, ISupportInitializeNotification, ISupportInitialize, 
	ISerializable, IXmlSerializable
/** @attribute SerializableAttribute() */ 
public class DataTable extends MarshalByValueComponent implements IListSource, ISupportInitializeNotification, 
	ISupportInitialize, ISerializable, IXmlSerializable
SerializableAttribute 
public class DataTable extends MarshalByValueComponent implements IListSource, ISupportInitializeNotification, 
	ISupportInitialize, ISerializable, IXmlSerializable

DataTable ist ein zentrales Objekt in der ADO.NET-Bibliothek. Zu den weiteren Objekten, die DataTable verwenden, zählen DataSet und DataView.

Beachten Sie beim Zugriff auf DataTable-Objekte, dass für diese die Groß- bzw. Kleinschreibung bedingt beachtet werden muss. Wenn z. B. eine DataTable "mydatatable" und eine weitere "Mydatatable" benannt ist, wird in einer Zeichenfolge zum Suchen einer dieser Tabellen die Groß- und Kleinschreibung unterschieden. Wenn jedoch "mydatatable", aber nicht "Mydatatable" vorhanden ist, wird in der Suchzeichenfolge die Groß- und Kleinschreibung nicht unterschieden. Ein DataSet kann zwei DataTable-Objekte mit demselben TableName-Eigenschaftenwert, aber unterschiedlichen Namespace-Eigenschaftenwerten enthalten. Weitere Informationen über das Arbeiten mit DataTable-Objekten finden Sie unter Erstellen einer DataTable.

Beim programmgesteuerten Erstellen einer DataTable müssen Sie zuerst deren Schema definieren, indem Sie der DataColumnCollection (Zugriff über die Columns-Eigenschaft) DataColumn-Objekte hinzufügen. Weitere Informationen über das Hinzufügen von DataColumn-Objekten finden Sie unter Hinzufügen von Spalten zu einer Tabelle.

Wenn Sie einer DataTable Zeilen hinzufügen möchten, müssen Sie zunächst mit der NewRow-Methode ein neues DataRow-Objekt zurückgeben. Mit der NewRow-Methode wird eine Zeile zurückgegeben, die das durch die DataColumnCollection der Tabelle definierte Schema der DataTable enthält. Die maximale Anzahl von Zeilen, die in einer DataTable gespeichert werden kann, beträgt 16.777.216. Weitere Informationen finden Sie unter Hinzufügen von Daten zu einer Tabelle.

Die DataTable enthält außerdem eine Auflistung von Constraint-Objekten, mit denen die Datenintegrität sichergestellt werden kann. Weitere Informationen finden Sie unter Hinzufügen von Einschränkungen zu einer Tabelle.

Viele DataTable-Ereignisse stehen zur Verfügung, um zu bestimmen, ob Änderungen an einer Tabelle vorgenommen wurden, u. a. RowChanged, RowChanging, RowDeleting und RowDeleted. Weitere Informationen über die Ereignisse, die mit einer DataTable verwendet werden können, finden Sie unter Arbeiten mit DataTable-Ereignissen.

Wenn eine Instanz von DataTable erstellt wird, werden einige Lese-/Schreibeigenschaften auf die Anfangswerte festgelegt. Eine Liste dieser Werte finden Sie im Thema zum System.Data.DataTable-Konstruktor.

HinweisHinweis

Das DataSet-Objekt und das DataTable-Objekt erben von MarshalByValueComponent und 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.

ThemaPosition
Gewusst wie: Erstellen von DataTablesDatenzugriff in Visual Studio
Gewusst wie: Erstellen von DataTablesDatenzugriff in Visual Studio

Im folgenden Beispiel werden zwei DataTable-Objekte und ein DataRelation-Objekt erstellt, und die neuen Objekte werden einem DataSet hinzugefü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");
}

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

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0
Anzeigen:
© 2014 Microsoft