次の方法で共有


DataTableCollection クラス

DataSet のテーブルのコレクションを表します。

この型のすべてのメンバの一覧については、DataTableCollection メンバ を参照してください。

System.Object
   System.Data.InternalDataCollectionBase
      System.Data.DataTableCollection

<Serializable>
Public Class DataTableCollection   Inherits InternalDataCollectionBase
[C#]
[Serializable]
public class DataTableCollection : InternalDataCollectionBase
[C++]
[Serializable]
public __gc class DataTableCollection : public   InternalDataCollectionBase
[JScript]
public
   Serializable
class DataTableCollection extends InternalDataCollectionBase

スレッドセーフ

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

解説

DataTableCollection には特定の DataSet のすべての DataTable オブジェクトが格納されます。 DataSetDataTableCollection にアクセスするには、 Tables プロパティを使用します。

コレクション内の項目を管理するには、 DataTableCollectionAddClearRemove などのメソッドを使用します。

Contains メソッドを使用して、(インデックスまたは名前で指定する) 特定のテーブルがコレクション内にあるかどうかを確認します。

テーブル間を移動するには、 DataTableChildRelations プロパティまたは ParentRelations プロパティを使用して、 DataRelation オブジェクトのコレクションにアクセスします。 Relations プロパティを使用する方法でも、指定した DataSet コレクション内の DataTables の親子のリレーションシップ内を移動できます。

使用例

[Visual Basic, C#, C++] 次に示す最初の例では、 DataSetDataTableCollection を取得し、各テーブルの各行の各列の値を出力します。2 番目の例では、2 つの列で新しい DataTable を作成し、このテーブルを DataTableCollection に追加します。

 
Private Sub GetTables(ds As DataSet)
   ' Get Each DataTable in the DataTableCollection and print each row value.
   Dim t As DataTable
   Dim r As DataRow
   Dim c As DataColumn
   For Each t In ds.Tables
      For Each r In t.Rows
         For Each c in t.Columns
            If Not (r(c) Is Nothing) Then
               Console.WriteLine(r(c))
            End If
         Next
      Next
   Next
End Sub

Private Sub CreateTable(ds As DataSet)
   Dim newTable As DataTable = new DataTable("MyTable")
   newTable.Columns.Add("ID", Type.GetType("System.Int32"))
   newTable.Columns.Add("Name", Type.GetType("System.String"))
   ds.Tables.Add(newTable)
End Sub

[C#] 
private void GetTables(DataSet ds)
{
   // Get Each DataTable in the DataTableCollection and print each row value.
   foreach (DataTable t in ds.Tables)
      foreach (DataRow r in t.Rows)
         foreach (DataColumn c in t.Columns)
            if (r[c] != null)
               Console.WriteLine(r[c]);
}

private void CreateTable(DataSet ds)
{
   DataTable newTable = new DataTable("MyTable");
   newTable.Columns.Add("ID", typeof(int));
   newTable.Columns.Add("Name", typeof(string));
   ds.Tables.Add(newTable);
}

[C++] 
private:
 void GetTables(DataSet* ds)
 {
    // Get Each DataTable in the DataTableCollection and print each row value.
    System::Collections::IEnumerator* myEnum = ds->Tables->GetEnumerator();
    while (myEnum->MoveNext())
    {
       DataTable* t = __try_cast<DataTable*>(myEnum->Current);
       System::Collections::IEnumerator* myEnum1 = t->Rows->GetEnumerator();
       while (myEnum1->MoveNext())
       {
          DataRow* r = __try_cast<DataRow*>(myEnum1->Current);
          System::Collections::IEnumerator* myEnum2 = t->Columns->GetEnumerator();
          while (myEnum2->MoveNext())
          {
             DataColumn* c = __try_cast<DataColumn*>(myEnum2->Current);
             if (r->Item[c] != 0)
                Console::WriteLine(r->Item[c]);
          }
       }
    }
 }

 void CreateTable(DataSet* ds)
 {
    DataTable* newTable = new DataTable(S"MyTable");
    newTable->Columns->Add(S"ID", __typeof(int));
    newTable->Columns->Add(S"Name", __typeof(String));
    ds->Tables->Add(newTable);
 }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Data

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: System.Data (System.Data.dll 内)

参照

DataTableCollection メンバ | System.Data 名前空間 | DataColumn | DataRow | DataTable | DataSet