DataTable クラス

定義

メモリ内データの 1 つのテーブルを表します。

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
継承
継承
DataTable
派生
属性
実装

次の例では、2つの DataTable オブジェクトと1つのオブジェクトを作成 DataRelation し、新しいオブジェクトをに追加し DataSet ます。 次に、テーブルがコントロールに表示され 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

このサンプルでは、特定のスキーマ定義を使用して手動で DataTable を作成する方法を示します。

  • 複数の Datatable を作成し、初期列を定義します。

  • テーブルの制約を作成します。

  • 値を挿入し、テーブルを表示します。

  • 式列を作成し、テーブルを表示します。

このコード サンプルを含む C# プロジェクトと Visual Basic プロジェクトは、開発者コード サンプルのページにあります。

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

注釈

は、 DataTable ADO.NET ライブラリの中央のオブジェクトです。 を使用するその他のオブジェクトには、 DataTable とが含まれ DataSet DataView ます。

オブジェクトにアクセスするとき DataTable は、条件付きで大文字と小文字を区別することに注意してください。 たとえば、 DataTable "mydatatable" という名前が付けられ、別の名前が "Mydatatable" の場合、いずれかのテーブルの検索に使用される文字列は、大文字と小文字が区別されると見なされます。 ただし、"mydatatable" が存在し、"Mydatatable" が存在しない場合、検索文字列は大文字と小文字が区別されないと見なされます。 には、 DataSet DataTable プロパティ値が同じでプロパティ値が異なる2つのオブジェクトを含めることができ TableName Namespace ます。 オブジェクトの操作の詳細については DataTable 、「 DataTable の作成」を参照してください。

プログラムを使用してを作成する場合は DataTable DataColumn 、まずオブジェクトをに追加して DataColumnCollection (プロパティを通じてアクセス)、そのスキーマを定義する必要があり Columns ます。 オブジェクトの追加の詳細につい DataColumn ては、「 DataTable への列の追加」を参照してください。

に行を追加するには、 DataTable 最初にメソッドを使用して新しいオブジェクトを返す必要があり NewRow DataRow ます。 メソッドは、 NewRow テーブルのによって定義されているのスキーマを持つ行を返し DataTable DataColumnCollection ます。 が格納できる行の最大数 DataTable は16777216です。 詳細については、「 DataTable へのデータの追加」を参照してください。

には、 DataTable Constraint データの整合性を確保するために使用できるオブジェクトのコレクションも含まれています。 詳しくは、「DataTable の制約」をご覧ください。

DataTableテーブルに変更が加えられたかどうかを判断するために使用できるイベントは多数あります。 これには、RowChangedRowChangingRowDeleting、および RowDeleted が含まれます。 で使用できるイベントの詳細につい DataTable ては、「 DataTable イベントの処理」を参照してください。

のインスタンスが作成されると、 DataTable 読み取り/書き込みプロパティの一部が初期値に設定されます。 これらの値の一覧については、「コンストラクター」を参照してください DataTable.DataTable

注意

DataSetオブジェクトおよび DataTable オブジェクトは、から継承し、 MarshalByValueComponent ISerializable .NET Framework リモート処理用のインターフェイスをサポートします。 これらのオブジェクトは、.NET Framework リモート処理に使用できる唯一の ADO.NET オブジェクトです。

セキュリティの考慮事項

データセットと DataTable のセキュリティについては、「 セキュリティガイダンス」を参照してください。

コンストラクター

DataTable()

引数を指定せずに、DataTable クラスの新しいインスタンスを初期化します。

DataTable(SerializationInfo, StreamingContext)

DataTableSerializationInfo を使用して、StreamingContext クラスの新しいインスタンスを初期化します。

DataTable(String)

指定したテーブル名を使用して DataTable クラスの新しいインスタンスを初期化します。

DataTable(String, String)

指定したテーブル名と名前空間を使用して、DataTable クラスの新しいインスタンスを初期化します。

フィールド

fInitInProgress

初期化処理中かどうかをチェックします。 初期化は実行時に発生します。

プロパティ

CaseSensitive

テーブル内の文字列比較で大文字と小文字を区別するかどうかを示します。

ChildRelations

この DataTable の子リレーションシップのコレクションを取得します。

Columns

このテーブルに属する列のコレクションを取得します。

Constraints

このテーブルに保持されている制約のコレクションを取得します。

Container

コンポーネントを格納するコンテナーを取得します。

(継承元 MarshalByValueComponent)
DataSet

このテーブルが属する DataSet を取得します。

DefaultView

フィルター処理されたビューまたはカーソル位置を含むことがある、テーブルのカスタマイズされたビューを取得します。

DesignMode

コンポーネントが現在デザイン モードかどうかを示す値を取得します。

(継承元 MarshalByValueComponent)
DisplayExpression

ユーザー インターフェイスにこのテーブルを表示するために使用する値を返す式を取得または設定します。 DisplayExpression プロパティを使用すると、ユーザー インターフェイスにこのテーブルの名前が表示されます。

Events

コンポーネントに結び付けられているイベント ハンドラーのリストを取得します。

(継承元 MarshalByValueComponent)
ExtendedProperties

カスタマイズされたユーザー情報のコレクションを取得します。

HasErrors

テーブルが属する DataSet のいずれかのテーブルのいずれかの行にエラーがあるかどうかを示す値を取得します。

IsInitialized

DataTable が初期化されているかどうかを示す値を取得します。

Locale

テーブル内の文字列の比較に使用するロケール情報を取得または設定します。

MinimumCapacity

このテーブルの初期開始サイズを取得または設定します。

Namespace

DataTable に格納されているデータの XML 表現の名前空間を取得または設定します。

ParentRelations

この DataTable の親リレーションシップのコレクションを取得します。

Prefix

DataTable に格納されているデータの XML 表現の名前空間を取得または設定します。

PrimaryKey

このデータ テーブルの主キーとして機能する列の配列を取得または設定します。

RemotingFormat

シリアル化形式を取得または設定します。

Rows

このテーブルに属する行のコレクションを取得します。

Site

ISiteDataTable を取得または設定します。

TableName

DataTable の名前を取得または設定します。

メソッド

AcceptChanges()

前回 AcceptChanges() を呼び出した以降にこのテーブルに対して行われたすべての変更をコミットします。

BeginInit()

フォームまたは別のコンポーネントで使用する DataTable の初期化を開始します。 初期化は実行時に発生します。

BeginLoadData()

データを読み込む間、通知、インデックスの維持、および制約をオフにします。

Clear()

DataTable からすべてのデータを消去します。

Clone()

すべての DataTable スキーマおよび制約を含め DataTable の構造体のクローンを作成します。

Compute(String, String)

フィルター基準を満たしている現在の行で指定した式を計算します。

Copy()

この DataTable の構造体だけでなくデータもコピーします。

CreateDataReader()

この DataTableReader 内のデータに対応する DataTable を返します。

CreateInstance()

DataTable の新しいインスタンスを作成します。

Dispose()

MarshalByValueComponent によって使用されているすべてのリソースを解放します。

(継承元 MarshalByValueComponent)
Dispose(Boolean)

MarshalByValueComponent によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。

(継承元 MarshalByValueComponent)
EndInit()

フォームまたは別のコンポーネントで使用する DataTable の初期化を終了します。 初期化は実行時に発生します。

EndLoadData()

データを読み込んだ後、通知、インデックスの維持、および制約をオンにします。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetChanges()

前回 DataTable を読み取るか、AcceptChanges() を呼び出した以降にこのデータセットに対して行われたすべての変更が格納されているこのデータセットのコピーを取得します。

GetChanges(DataRowState)

前回 DataTable を読み取るか、AcceptChanges() を呼び出した以降にこのデータセットに対して行われたすべての変更が格納されているこのデータセットのコピーを、DataRowState によってフィルター処理した後で取得します。

GetDataTableSchema(XmlSchemaSet)

このメソッドは、Web サービスの XmlSchemaSet を記述する Web サービス記述言語 (WSDL) を含む DataTable インスタンスを返します。

GetErrors()

エラーが含まれる DataRow オブジェクトの配列を取得します。

GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetObjectData(SerializationInfo, StreamingContext)

シリアル化情報オブジェクトを、DataTable のシリアル化に必要なデータで事前設定します。

GetRowType()

行の種類を取得します。

GetSchema()

このメンバーの詳細については、「GetSchema()」をご覧ください。

GetService(Type)

IServiceProvider を実装しているオブジェクトを取得します。

(継承元 MarshalByValueComponent)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
ImportRow(DataRow)

プロパティ設定、元の値、および現在の値を保持し、DataRowDataTable にコピーします。

Load(IDataReader)

指定された DataTable を使用し、IDataReader にデータ ソースからの値を設定します。 DataTable が既に行を含んでいる場合、データ ソースからの受信データは既存の行にマージされます。

Load(IDataReader, LoadOption)

指定された DataTable を使用し、IDataReader にデータ ソースからの値を設定します。 DataTable が既に行を含んでいる場合、loadOption パラメーターの値に従って、データ ソースからの受信データは既存の行にマージされます。

Load(IDataReader, LoadOption, FillErrorEventHandler)

エラー処理デリゲートを使用し、指定された DataTable を使用して、IDataReader にデータ ソースからの値を設定します。

LoadDataRow(Object[], Boolean)

特定の行を検索し、更新します。 一致する行が見つからない場合は、指定した値を使用して新しい行が作成されます。

LoadDataRow(Object[], LoadOption)

特定の行を検索し、更新します。 一致する行が見つからない場合は、指定した値を使用して新しい行が作成されます。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
Merge(DataTable)

指定した DataTable を現在の DataTable とマージします。

Merge(DataTable, Boolean)

指定した DataTable を現在の DataTable とマージし、現在の DataTable の変更を保持するかどうかを指定します。

Merge(DataTable, Boolean, MissingSchemaAction)

指定した DataTable を現在の DataTable とマージして、現在の DataTable の変更を保持するかどうかを指定し、さらに欠けているスキーマの処理方法を指定します。

NewRow()

テーブルと同じスキーマで新しい DataRow を作成します。

NewRowArray(Int32)

DataRow の配列を返します。

NewRowFromBuilder(DataRowBuilder)

既存の行から新しい行を作成します。

OnColumnChanged(DataColumnChangeEventArgs)

ColumnChanged イベントを発生させます。

OnColumnChanging(DataColumnChangeEventArgs)

ColumnChanging イベントを発生させます。

OnPropertyChanging(PropertyChangedEventArgs)

PropertyChanged イベントを発生させます。

OnRemoveColumn(DataColumn)

DataTable が削除されることを DataColumn に通知します。

OnRowChanged(DataRowChangeEventArgs)

RowChanged イベントを発生させます。

OnRowChanging(DataRowChangeEventArgs)

RowChanging イベントを発生させます。

OnRowDeleted(DataRowChangeEventArgs)

RowDeleted イベントを発生させます。

OnRowDeleting(DataRowChangeEventArgs)

RowDeleting イベントを発生させます。

OnTableCleared(DataTableClearEventArgs)

TableCleared イベントを発生させます。

OnTableClearing(DataTableClearEventArgs)

TableClearing イベントを発生させます。

OnTableNewRow(DataTableNewRowEventArgs)

TableNewRow イベントを発生させます。

ReadXml(Stream)

指定した DataTable を使用して、XML スキーマとデータを Stream に読み込みます。

ReadXml(String)

指定したファイルから、XML スキーマとデータを DataTable に読み込みます。

ReadXml(TextReader)

指定した DataTable を使用して、XML スキーマとデータを TextReader に読み込みます。

ReadXml(XmlReader)

指定した DataTable を使用して、XML スキーマとデータを XmlReader に読み込みます。

ReadXmlSchema(Stream)

指定したストリームを使用して、XML スキーマを DataTable に読み込みます。

ReadXmlSchema(String)

指定したファイルから DataTable に XML スキーマを読み込みます。

ReadXmlSchema(TextReader)

指定した DataTable を使用して、XML スキーマを TextReader に読み込みます。

ReadXmlSchema(XmlReader)

指定した DataTable を使用して、XML スキーマを XmlReader に読み込みます。

ReadXmlSerializable(XmlReader)

XML ストリームから読み取ります。

RejectChanges()

このテーブルを読み込むか、前回 AcceptChanges() を呼び出した以降にこのテーブルに対して行われたすべての変更をロールバックします。

Reset()

DataTable を元の状態にリセットします。 テーブルのすべてのデータ、インデックス、リレーションシップ、および列の削除をリセットします。 DataSet に DataTable が含まれている場合は、テーブルをリセットした後も、テーブルは DataSet の一部です。

Select()

すべての DataRow オブジェクトの配列を取得します。

Select(String)

フィルター基準と一致するすべての DataRow オブジェクトの配列を取得します。

Select(String, String)

フィルター基準と一致するすべての DataRow オブジェクトの配列を、指定した並べ替え順で取得します。

Select(String, String, DataViewRowState)

フィルター基準と一致するすべての DataRow オブジェクトの配列を、指定した状態と一致する並べ替え順に取得します。

ToString()

TableNameDisplayExpression が連結された文字列として存在する場合は、これらを取得します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)
WriteXml(Stream)

DataTable の現在の内容を指定された Stream を使用して XML として書き込みます。

WriteXml(Stream, Boolean)

DataTable の現在の内容を指定された Stream を使用して XML として書き込みます。 テーブルのデータとその子孫をすべて保存するには、writeHierarchy パラメーターを true に設定します。

WriteXml(Stream, XmlWriteMode)

指定した DataTable を使用して、XmlWriteMode の現在のデータを、指定したファイルに書き込みます。オプションでスキーマを書き込むこともできます。 スキーマを書き込むには、mode パラメーターの値を WriteSchema に設定します。

WriteXml(Stream, XmlWriteMode, Boolean)

指定した DataTable を使用して、XmlWriteMode の現在のデータを、指定したファイルに書き込みます。オプションでスキーマを書き込むこともできます。 スキーマを書き込むには、mode パラメーターの値を WriteSchema に設定します。 テーブルのデータとその子孫をすべて保存するには、writeHierarchy パラメーターを true に設定します。

WriteXml(String)

指定したファイルを使用して DataTable の現在の内容を XML で書き込みます。

WriteXml(String, Boolean)

指定したファイルを使用して DataTable の現在の内容を XML で書き込みます。 テーブルのデータとその子孫をすべて保存するには、writeHierarchy パラメーターを true に設定します。

WriteXml(String, XmlWriteMode)

指定したファイルと DataTable を使用して、XmlWriteMode の現在のデータを書き込みます。オプションでスキーマを書き込むこともできます。 スキーマを書き込むには、mode パラメーターの値を WriteSchema に設定します。

WriteXml(String, XmlWriteMode, Boolean)

指定したファイルと DataTable を使用して、XmlWriteMode の現在のデータを書き込みます。オプションでスキーマを書き込むこともできます。 スキーマを書き込むには、mode パラメーターの値を WriteSchema に設定します。 テーブルのデータとその子孫をすべて保存するには、writeHierarchy パラメーターを true に設定します。

WriteXml(TextWriter)

DataTable の現在の内容を指定された TextWriter を使用して XML として書き込みます。

WriteXml(TextWriter, Boolean)

DataTable の現在の内容を指定された TextWriter を使用して XML として書き込みます。 テーブルのデータとその子孫をすべて保存するには、writeHierarchy パラメーターを true に設定します。

WriteXml(TextWriter, XmlWriteMode)

指定した DataTableTextWriter を使用して、XmlWriteMode の現在のデータを書き込みます。オプションでスキーマを書き込むこともできます。 スキーマを書き込むには、mode パラメーターの値を WriteSchema に設定します。

WriteXml(TextWriter, XmlWriteMode, Boolean)

指定した DataTableTextWriter を使用して、XmlWriteMode の現在のデータを書き込みます。オプションでスキーマを書き込むこともできます。 スキーマを書き込むには、mode パラメーターの値を WriteSchema に設定します。 テーブルのデータとその子孫をすべて保存するには、writeHierarchy パラメーターを true に設定します。

WriteXml(XmlWriter)

DataTable の現在の内容を指定された XmlWriter を使用して XML として書き込みます。

WriteXml(XmlWriter, Boolean)

DataTable の現在の内容を指定された XmlWriter を使用して XML として書き込みます。

WriteXml(XmlWriter, XmlWriteMode)

指定した DataTableXmlWriter を使用して、XmlWriteMode の現在のデータを書き込みます。オプションでスキーマを書き込むこともできます。 スキーマを書き込むには、mode パラメーターの値を WriteSchema に設定します。

WriteXml(XmlWriter, XmlWriteMode, Boolean)

指定した DataTableXmlWriter を使用して、XmlWriteMode の現在のデータを書き込みます。オプションでスキーマを書き込むこともできます。 スキーマを書き込むには、mode パラメーターの値を WriteSchema に設定します。 テーブルのデータとその子孫をすべて保存するには、writeHierarchy パラメーターを true に設定します。

WriteXmlSchema(Stream)

DataTable の現在のデータ構造体を指定されたストリームに XML スキーマとして書き込みます。

WriteXmlSchema(Stream, Boolean)

DataTable の現在のデータ構造体を指定されたストリームに XML スキーマとして書き込みます。 テーブルのスキーマとその子孫をすべて保存するには、writeHierarchy パラメーターを true に設定します。

WriteXmlSchema(String)

DataTable の現在のデータ構造体を指定されたファイルに XML スキーマとして書き込みます。

WriteXmlSchema(String, Boolean)

DataTable の現在のデータ構造体を指定されたファイルに XML スキーマとして書き込みます。 テーブルのスキーマとその子孫をすべて保存するには、writeHierarchy パラメーターを true に設定します。

WriteXmlSchema(TextWriter)

指定した DataTable を使用して、TextWriter の現在のデータ構造体を XML スキーマとして書き込みます。

WriteXmlSchema(TextWriter, Boolean)

指定した DataTable を使用して、TextWriter の現在のデータ構造体を XML スキーマとして書き込みます。 テーブルのスキーマとその子孫をすべて保存するには、writeHierarchy パラメーターを true に設定します。

WriteXmlSchema(XmlWriter)

指定した DataTable を使用して、XmlWriter の現在のデータ構造体を XML スキーマとして書き込みます。

WriteXmlSchema(XmlWriter, Boolean)

指定した DataTable を使用して、XmlWriter の現在のデータ構造体を XML スキーマとして書き込みます。 テーブルのスキーマとその子孫をすべて保存するには、writeHierarchy パラメーターを true に設定します。

イベント

ColumnChanged

DataColumn 内の指定した DataRow の値が変更された後に発生します。

ColumnChanging

DataColumn 内の指定した DataRow の値が変更されているときに発生します。

Disposed

コンポーネントの Disposed イベントを待機するイベント ハンドラーを追加します。

(継承元 MarshalByValueComponent)
Initialized

DataTable が初期化された後に発生します。

RowChanged

DataRow が正常に変更された後に発生します。

RowChanging

DataRow が変更されているときに発生します。

RowDeleted

テーブル内の行が削除された後に発生します。

RowDeleting

テーブル内の行が削除される直前に発生します。

TableCleared

DataTable が消去された後に発生します。

TableClearing

DataTable が削除されたときに発生します。

TableNewRow

新しい DataRow が挿入されると発生します。

明示的なインターフェイスの実装

IListSource.ContainsListCollection

このメンバーの詳細については、「ContainsListCollection」をご覧ください。

IListSource.GetList()

このメンバーの詳細については、「GetList()」をご覧ください。

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

シリアル化情報オブジェクトを、DataTable のシリアル化に必要なデータで事前設定します。

IXmlSerializable.GetSchema()

このメンバーの詳細については、「GetSchema()」をご覧ください。

IXmlSerializable.ReadXml(XmlReader)

このメンバーの詳細については、「ReadXml(XmlReader)」をご覧ください。

IXmlSerializable.WriteXml(XmlWriter)

このメンバーの詳細については、「WriteXml(XmlWriter)」をご覧ください。

拡張メソッド

AsDataView(DataTable)

LINQ 対応の DataView オブジェクトを作成して返します。

AsEnumerable(DataTable)

IEnumerable<T> オブジェクトを返します。ここで、ジェネリック パラメーター TDataRow です。 このオブジェクトは、LINQ 式またはメソッドクエリで使用できます。

適用対象

スレッド セーフ

この型は、マルチスレッドの読み取り操作に対して安全です。 書き込み操作はすべて同期する必要があります。

こちらもご覧ください