DataTable Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Reprezentuje jedną tabelę danych w pamięci.
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
- Dziedziczenie
- Dziedziczenie
-
DataTable
- Pochodne
- Atrybuty
- Implementuje
Przykłady
Poniższy przykład tworzy dwa DataTable obiekty i jeden DataRelation obiekt i dodaje nowe obiekty do obiektu DataSet. Następnie tabele są wyświetlane w kontrolce DataGridView .
// 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
W tym przykładzie pokazano, jak ręcznie utworzyć tabelę danych z określonymi definicjami schematu:
Utwórz wiele tabel danych i zdefiniuj początkowe kolumny.
Utwórz ograniczenia tabeli.
Wstaw wartości i wyświetl tabele.
Utwórz kolumny wyrażeń i wyświetl tabele.
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
Uwagi
Obiekt DataTable jest centralnym obiektem w bibliotece ADO.NET. Inne obiekty korzystające z DataTable elementu DataSet include i .DataView
Podczas uzyskiwania DataTable dostępu do obiektów należy pamiętać, że są one uwzględniane warunkowo. Na przykład jeśli jedna DataTable ma nazwę "mydatatable", a druga nosi nazwę "Mydatatable", ciąg używany do wyszukiwania jednej z tabel jest traktowany jako rozróżniana wielkość liter. Jeśli jednak ciąg wyszukiwania "mydatatable" istnieje i "Mydatatable" nie, ciąg wyszukiwania jest uważany za niewrażliwy na wielkość liter. Obiekt DataSet może zawierać dwa DataTable obiekty, które mają tę samą TableName wartość właściwości, ale różne Namespace wartości właściwości. Aby uzyskać więcej informacji na temat pracy z obiektami DataTable , zobacz Tworzenie tabeli danych.
Jeśli tworzysz DataTable programowo, musisz najpierw zdefiniować jego schemat, dodając DataColumn obiekty do DataColumnCollection obiektu (dostępne za pośrednictwem Columns właściwości). Aby uzyskać więcej informacji na temat dodawania DataColumn obiektów, zobacz Dodawanie kolumn do tabeli DataTable.
Aby dodać wiersze do klasy DataTable, należy najpierw użyć NewRow metody , aby zwrócić nowy DataRow obiekt. Metoda NewRow zwraca wiersz ze schematem DataTableelementu , ponieważ jest definiowana przez tabelę DataColumnCollection. Maksymalna liczba wierszy, które DataTable można przechowywać, wynosi 16 777 216. Aby uzyskać więcej informacji, zobacz Dodawanie danych do tabeli DataTable.
Zawiera DataTable również kolekcję Constraint obiektów, których można użyć do zapewnienia integralności danych. Aby uzyskać więcej informacji, zobacz Ograniczenia tabeli danych.
Istnieje wiele DataTable zdarzeń, których można użyć do określenia, kiedy zmiany są wprowadzane do tabeli. Należą do RowChangednich : , RowChanging, RowDeletingi RowDeleted. Aby uzyskać więcej informacji na temat zdarzeń, które mogą być używane z elementem DataTable, zobacz Obsługa zdarzeń w formie tabeli danych.
Po utworzeniu wystąpienia niektóre DataTable właściwości odczytu/zapisu są ustawione na wartości początkowe. Aby uzyskać listę tych wartości, zobacz temat konstruktora DataTable.DataTable .
Uwaga
Obiekty DataSet i DataTable dziedziczą i MarshalByValueComponent obsługują ISerializable interfejs na potrzeby komunikacji zdalnie .NET Framework. Są to jedyne obiekty ADO.NET, których można użyć do komunikacji zdalnie .NET Framework.
Zagadnienia dotyczące bezpieczeństwa
Aby uzyskać informacje o zabezpieczeniach dataSet i DataTable, zobacz Wskazówki dotyczące zabezpieczeń.
Konstruktory
DataTable() |
Inicjuje DataTable nowe wystąpienie klasy bez argumentów. |
DataTable(SerializationInfo, StreamingContext) |
Inicjuje nowe wystąpienie klasy DataTable z zserializowanymi danymi. |
DataTable(String) |
Inicjuje DataTable nowe wystąpienie klasy o określonej nazwie tabeli. |
DataTable(String, String) |
Inicjuje DataTable nowe wystąpienie klasy przy użyciu określonej nazwy tabeli i przestrzeni nazw. |
Pola
fInitInProgress |
Sprawdza, czy inicjowanie jest w toku. Inicjowanie odbywa się w czasie wykonywania. |
Właściwości
CaseSensitive |
Wskazuje, czy porównania ciągów w tabeli są uwzględniane wielkości liter. |
ChildRelations |
Pobiera kolekcję relacji podrzędnych dla tego elementu DataTable. |
Columns |
Pobiera kolekcję kolumn należących do tej tabeli. |
Constraints |
Pobiera kolekcję ograniczeń obsługiwanych przez tę tabelę. |
Container |
Pobiera kontener dla składnika. (Odziedziczone po MarshalByValueComponent) |
DataSet |
Pobiera element DataSet , do którego należy ta tabela. |
DefaultView |
Pobiera dostosowany widok tabeli, który może zawierać filtrowany widok lub położenie kursora. |
DesignMode |
Pobiera wartość wskazującą, czy składnik jest obecnie w trybie projektowania. (Odziedziczone po MarshalByValueComponent) |
DisplayExpression |
Pobiera lub ustawia wyrażenie zwracające wartość używaną do reprezentowania tej tabeli w interfejsie użytkownika. Właściwość |
Events |
Pobiera listę programów obsługi zdarzeń dołączonych do tego składnika. (Odziedziczone po MarshalByValueComponent) |
ExtendedProperties |
Pobiera kolekcję dostosowanych informacji o użytkowniku. |
HasErrors |
Pobiera wartość wskazującą, czy występują błędy w dowolnych wierszach w dowolnej tabeli, DataSet do której należy tabela. |
IsInitialized |
Pobiera wartość wskazującą, czy DataTable element jest inicjowany. |
Locale |
Pobiera lub ustawia informacje regionalne używane do porównywania ciągów w tabeli. |
MinimumCapacity |
Pobiera lub ustawia początkowy rozmiar początkowy dla tej tabeli. |
Namespace |
Pobiera lub ustawia przestrzeń nazw dla reprezentacji XML danych przechowywanych w obiekcie DataTable. |
ParentRelations |
Pobiera kolekcję relacji nadrzędnych dla tego DataTableelementu . |
Prefix |
Pobiera lub ustawia przestrzeń nazw dla reprezentacji XML danych przechowywanych w obiekcie DataTable. |
PrimaryKey |
Pobiera lub ustawia tablicę kolumn, które działają jako klucze podstawowe dla tabeli danych. |
RemotingFormat |
Pobiera lub ustawia format serializacji. |
Rows |
Pobiera kolekcję wierszy należących do tej tabeli. |
Site | |
TableName |
Pobiera lub ustawia nazwę .DataTable |
Metody
AcceptChanges() |
Zatwierdza wszystkie zmiany wprowadzone w tej tabeli od czasu ostatniego AcceptChanges() wywołania. |
BeginInit() |
Rozpoczyna inicjowanie elementu używanego DataTable w formularzu lub używanego przez inny składnik. Inicjowanie odbywa się w czasie wykonywania. |
BeginLoadData() |
Wyłącza powiadomienia, konserwację indeksu i ograniczenia podczas ładowania danych. |
Clear() |
Czyści DataTable wszystkie dane. |
Clone() |
Klonuje strukturę obiektu DataTable, w tym wszystkie DataTable schematy i ograniczenia. |
Compute(String, String) |
Oblicza podane wyrażenie w bieżących wierszach, które przekazują kryteria filtrowania. |
Copy() |
Kopiuje zarówno strukturę, jak i dane dla tego obiektu DataTable. |
CreateDataReader() |
Zwraca wartość odpowiadającą DataTableReader danym w tym DataTableobiekcie . |
CreateInstance() |
Tworzy nowe wystąpienie klasy DataTable. |
Dispose() |
Zwalnia wszelkie zasoby używane przez element MarshalByValueComponent. (Odziedziczone po MarshalByValueComponent) |
Dispose(Boolean) |
Zwalnia zasoby niezarządzane używane przez element MarshalByValueComponent i opcjonalnie zwalnia zasoby zarządzane. (Odziedziczone po MarshalByValueComponent) |
EndInit() |
Kończy inicjowanie obiektu DataTable używanego w formularzu lub używanego przez inny składnik. Inicjowanie odbywa się w czasie wykonywania. |
EndLoadData() |
Włącza powiadomienia, konserwację indeksu i ograniczenia po załadowaniu danych. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetChanges() |
Pobiera kopię pliku DataTable zawierającego wszystkie zmiany wprowadzone do niego od czasu załadowania lub AcceptChanges() ostatniego wywołania. |
GetChanges(DataRowState) |
Pobiera kopię pliku zawierającego wszystkie zmiany wprowadzone do niego od czasu ostatniego DataTable załadowania lub od AcceptChanges() wywołania , filtrowane przez DataRowStateelement . |
GetDataTableSchema(XmlSchemaSet) |
Ta metoda zwraca XmlSchemaSet wystąpienie zawierające język opisu usług sieci Web (WSDL), który opisuje DataTable usług sieci Web. |
GetErrors() |
Pobiera tablicę DataRow obiektów, które zawierają błędy. |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetObjectData(SerializationInfo, StreamingContext) |
Wypełnia obiekt informacji o serializacji danymi wymaganymi do serializacji obiektu DataTable. |
GetRowType() |
Pobiera typ wiersza. |
GetSchema() |
Aby uzyskać opis tego członka, zobacz GetSchema(). |
GetService(Type) |
Pobiera implementator obiektu IServiceProvider. (Odziedziczone po MarshalByValueComponent) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
ImportRow(DataRow) |
Kopiuje element DataRow do DataTableobiektu , zachowując wszelkie ustawienia właściwości, a także oryginalne i bieżące wartości. |
Load(IDataReader) |
Wypełnia element DataTable wartościami ze źródła danych przy użyciu podanego IDataReaderelementu . Jeśli obiekt DataTable zawiera już wiersze, dane przychodzące ze źródła danych zostaną scalone z istniejącymi wierszami. |
Load(IDataReader, LoadOption) |
Wypełnia element DataTable wartościami ze źródła danych przy użyciu podanego IDataReaderelementu . |
Load(IDataReader, LoadOption, FillErrorEventHandler) |
Wypełnia element DataTable wartościami ze źródła danych przy użyciu dostarczonego IDataReader delegata obsługującego błędy. |
LoadDataRow(Object[], Boolean) |
Znajduje i aktualizuje określony wiersz. Jeśli nie znaleziono pasującego wiersza, zostanie utworzony nowy wiersz przy użyciu podanych wartości. |
LoadDataRow(Object[], LoadOption) |
Znajduje i aktualizuje określony wiersz. Jeśli nie znaleziono pasującego wiersza, zostanie utworzony nowy wiersz przy użyciu podanych wartości. |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
Merge(DataTable) |
Scal określony DataTable element z bieżącym DataTableelementem . |
Merge(DataTable, Boolean) |
Scal określony DataTable element z bieżącym |
Merge(DataTable, Boolean, MissingSchemaAction) |
Scal określony DataTable z bieżącym |
NewRow() |
Tworzy nowy DataRow z tym samym schematem co tabela. |
NewRowArray(Int32) |
Zwraca tablicę .DataRow |
NewRowFromBuilder(DataRowBuilder) |
Tworzy nowy wiersz z istniejącego wiersza. |
OnColumnChanged(DataColumnChangeEventArgs) |
ColumnChanged Zgłasza zdarzenie. |
OnColumnChanging(DataColumnChangeEventArgs) |
ColumnChanging Zgłasza zdarzenie. |
OnPropertyChanging(PropertyChangedEventArgs) |
PropertyChanged Zgłasza zdarzenie. |
OnRemoveColumn(DataColumn) |
Powiadamia, DataTable że element DataColumn jest usuwany. |
OnRowChanged(DataRowChangeEventArgs) |
RowChanged Zgłasza zdarzenie. |
OnRowChanging(DataRowChangeEventArgs) |
RowChanging Zgłasza zdarzenie. |
OnRowDeleted(DataRowChangeEventArgs) |
RowDeleted Zgłasza zdarzenie. |
OnRowDeleting(DataRowChangeEventArgs) |
RowDeleting Zgłasza zdarzenie. |
OnTableCleared(DataTableClearEventArgs) |
TableCleared Zgłasza zdarzenie. |
OnTableClearing(DataTableClearEventArgs) |
TableClearing Zgłasza zdarzenie. |
OnTableNewRow(DataTableNewRowEventArgs) |
TableNewRow Zgłasza zdarzenie. |
ReadXml(Stream) |
Odczytuje schemat XML i dane do DataTable elementu przy użyciu określonego Streamelementu . |
ReadXml(String) |
Odczytuje schemat XML i dane z DataTable określonego pliku. |
ReadXml(TextReader) |
Odczytuje schemat XML i dane do DataTable elementu przy użyciu określonego TextReaderelementu . |
ReadXml(XmlReader) |
Odczytuje schemat XML i dane do DataTable elementu przy użyciu określonego XmlReaderelementu . |
ReadXmlSchema(Stream) |
Odczytuje schemat XML do DataTable przy użyciu określonego strumienia. |
ReadXmlSchema(String) |
Odczytuje schemat XML do DataTable pliku z określonego pliku. |
ReadXmlSchema(TextReader) |
Odczytuje schemat XML do DataTable elementu przy użyciu określonego TextReaderelementu . |
ReadXmlSchema(XmlReader) |
Odczytuje schemat XML do DataTable elementu przy użyciu określonego XmlReaderelementu . |
ReadXmlSerializable(XmlReader) |
Odczytuje ze strumienia XML. |
RejectChanges() |
Wycofuje wszystkie zmiany wprowadzone w tabeli od momentu jej załadowania lub ostatni raz AcceptChanges() został wywołany. |
Reset() |
Resetuje element DataTable do stanu pierwotnego. Reset usuwa wszystkie dane, indeksy, relacje i kolumny tabeli. Jeśli zestaw danych zawiera tabelę DataTable, tabela będzie nadal częścią elementu DataSet po zresetowaniu tabeli. |
Select() |
Pobiera tablicę wszystkich DataRow obiektów. |
Select(String) |
Pobiera tablicę wszystkich DataRow obiektów spełniających kryteria filtrowania. |
Select(String, String) |
Pobiera tablicę wszystkich DataRow obiektów spełniających kryteria filtrowania w określonej kolejności sortowania. |
Select(String, String, DataViewRowState) |
Pobiera tablicę wszystkich DataRow obiektów, które pasują do filtru w kolejności sortowania zgodnego z określonym stanem. |
ToString() |
Pobiera elementy TableName i DisplayExpression, jeśli istnieje jeden jako połączony ciąg. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
WriteXml(Stream) |
Zapisuje bieżącą zawartość obiektu DataTable jako XML przy użyciu określonego Streamelementu . |
WriteXml(Stream, Boolean) |
Zapisuje bieżącą zawartość DataTable pliku jako XML przy użyciu określonego Streamelementu . Aby zapisać dane dla tabeli i wszystkich jej elementów podrzędnych, ustaw |
WriteXml(Stream, XmlWriteMode) |
Zapisuje bieżące dane i opcjonalnie schemat dla DataTable określonego pliku przy użyciu określonego XmlWriteModepliku . Aby napisać schemat, ustaw wartość parametru |
WriteXml(Stream, XmlWriteMode, Boolean) |
Zapisuje bieżące dane i opcjonalnie schemat dla DataTable określonego pliku przy użyciu określonego XmlWriteModepliku . Aby napisać schemat, ustaw wartość parametru |
WriteXml(String) |
Zapisuje bieżącą zawartość pliku DataTable jako XML przy użyciu określonego pliku. |
WriteXml(String, Boolean) |
Zapisuje bieżącą zawartość DataTable pliku jako XML przy użyciu określonego pliku. Aby zapisać dane dla tabeli i wszystkich jej elementów podrzędnych, ustaw |
WriteXml(String, XmlWriteMode) |
Zapisuje bieżące dane i opcjonalnie schemat DataTable przy użyciu określonego pliku i XmlWriteMode. Aby napisać schemat, ustaw wartość parametru |
WriteXml(String, XmlWriteMode, Boolean) |
Zapisuje bieżące dane i opcjonalnie schemat DataTable przy użyciu określonego pliku i XmlWriteMode. Aby napisać schemat, ustaw wartość parametru |
WriteXml(TextWriter) |
Zapisuje bieżącą zawartość obiektu DataTable jako XML przy użyciu określonego TextWriterelementu . |
WriteXml(TextWriter, Boolean) |
Zapisuje bieżącą zawartość DataTable pliku jako XML przy użyciu określonego TextWriterelementu . Aby zapisać dane dla tabeli i wszystkich jej elementów podrzędnych, ustaw |
WriteXml(TextWriter, XmlWriteMode) |
Zapisuje bieżące dane i opcjonalnie schemat DataTable przy użyciu określonego TextWriter parametru i XmlWriteMode. Aby napisać schemat, ustaw wartość parametru |
WriteXml(TextWriter, XmlWriteMode, Boolean) |
Zapisuje bieżące dane i opcjonalnie schemat DataTable przy użyciu określonego TextWriter parametru i XmlWriteMode. Aby napisać schemat, ustaw wartość parametru |
WriteXml(XmlWriter) |
Zapisuje bieżącą zawartość obiektu DataTable jako XML przy użyciu określonego XmlWriterelementu . |
WriteXml(XmlWriter, Boolean) |
Zapisuje bieżącą zawartość DataTable pliku jako XML przy użyciu określonego XmlWriterelementu . |
WriteXml(XmlWriter, XmlWriteMode) |
Zapisuje bieżące dane i opcjonalnie schemat DataTable przy użyciu określonego XmlWriter parametru i XmlWriteMode. Aby napisać schemat, ustaw wartość parametru |
WriteXml(XmlWriter, XmlWriteMode, Boolean) |
Zapisuje bieżące dane i opcjonalnie schemat DataTable przy użyciu określonego XmlWriter parametru i XmlWriteMode. Aby napisać schemat, ustaw wartość parametru |
WriteXmlSchema(Stream) |
Zapisuje bieżącą strukturę DataTable danych jako schemat XML do określonego strumienia. |
WriteXmlSchema(Stream, Boolean) |
Zapisuje bieżącą strukturę DataTable danych jako schemat XML do określonego strumienia. Aby zapisać schemat dla tabeli i wszystkich jej elementów podrzędnych, ustaw |
WriteXmlSchema(String) |
Zapisuje bieżącą strukturę DataTable danych jako schemat XML do określonego pliku. |
WriteXmlSchema(String, Boolean) |
Zapisuje bieżącą strukturę DataTable danych jako schemat XML do określonego pliku. Aby zapisać schemat dla tabeli i wszystkich jej elementów podrzędnych, ustaw |
WriteXmlSchema(TextWriter) |
Zapisuje bieżącą strukturę DataTable danych jako schemat XML przy użyciu określonego TextWriterelementu . |
WriteXmlSchema(TextWriter, Boolean) |
Zapisuje bieżącą strukturę DataTable danych jako schemat XML przy użyciu określonego TextWriterelementu . Aby zapisać schemat dla tabeli i wszystkich jej elementów podrzędnych, ustaw |
WriteXmlSchema(XmlWriter) |
Zapisuje bieżącą strukturę DataTable danych jako schemat XML przy użyciu określonego XmlWriterelementu . |
WriteXmlSchema(XmlWriter, Boolean) |
Zapisuje bieżącą strukturę DataTable danych jako schemat XML przy użyciu określonego XmlWriterelementu . Aby zapisać schemat dla tabeli i wszystkich jej elementów podrzędnych, ustaw |
Zdarzenia
ColumnChanged |
Występuje po zmianie wartości określonej DataColumn w elemecie DataRow. |
ColumnChanging |
Występuje, gdy wartość jest zmieniana dla określonej DataColumn w elemecie DataRow. |
Disposed |
Dodaje program obsługi zdarzeń do nasłuchiwania Disposed zdarzenia w składniku. (Odziedziczone po MarshalByValueComponent) |
Initialized |
Występuje po zainicjowaniu DataTable . |
RowChanged |
Występuje po pomyślnym DataRow zmianie. |
RowChanging |
Występuje, gdy element DataRow zmienia się. |
RowDeleted |
Występuje po usunięciu wiersza w tabeli. |
RowDeleting |
Występuje przed usunięciem wiersza w tabeli. |
TableCleared |
Występuje po wyczyszczonej DataTable . |
TableClearing |
Występuje, gdy DataTable element jest czyszczone. |
TableNewRow |
Występuje, gdy zostanie wstawiony nowy DataRow . |
Jawne implementacje interfejsu
IListSource.ContainsListCollection |
Aby uzyskać opis tego członka, zobacz ContainsListCollection. |
IListSource.GetList() |
Aby uzyskać opis tego członka, zobacz GetList(). |
ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
Wypełnia obiekt informacji o serializacji danymi wymaganymi do serializacji obiektu DataTable. |
IXmlSerializable.GetSchema() |
Aby uzyskać opis tego członka, zobacz GetSchema(). |
IXmlSerializable.ReadXml(XmlReader) |
Aby uzyskać opis tego członka, zobacz ReadXml(XmlReader). |
IXmlSerializable.WriteXml(XmlWriter) |
Aby uzyskać opis tego członka, zobacz WriteXml(XmlWriter). |
Metody rozszerzania
AsDataView(DataTable) |
Tworzy i zwraca obiekt z DataView obsługą LINQ. |
AsEnumerable(DataTable) |
IEnumerable<T> Zwraca obiekt, w którym parametr |
Dotyczy
Bezpieczeństwo wątkowe
Ten typ jest bezpieczny dla operacji odczytu wielowątkowego. Należy zsynchronizować wszystkie operacje zapisu.