DataTable Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 |
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 | |
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 |
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 |
Merge(DataTable, Boolean, MissingSchemaAction) |
Führen Sie die angegebene DataTable mit der aktuellen |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
Gilt für
Threadsicherheit
Dieser Typ ist für Multithread-Lesevorgänge sicher. Sie müssen alle Schreibvorgänge synchronisieren.