次の方法で共有


DataTable の移動

DataTableReader は、1 つ以上の DataTable オブジェクトの内容を、読み取り専用、前方参照専用の 1 つ以上の結果セットとして取得します。

DataTableReader メソッドの呼び出しにより DataTableReader を作成した場合、CreateDataReader に複数の結果セットが含まれる場合があります。 結果セットが複数ある場合、NextResult メソッドは、カーソルを次の結果セットに移動します。 これは前方参照専用です。 前の結果セットに戻ることはできません。

次の例では、TestConstructor メソッドで 2 つの DataTable インスタンスを作成します。 DataTableReader クラスを対象としたこのコンストラクターを示すために、この例では、2 つの DataTable が含まれる配列に基づいた新しい DataTableReader を作成し、単純な操作を実行して、最初の数列の内容をコンソール ウィンドウに表示します。

static void TestConstructor()
{
    // Create two data adapters, one for each of the two
    // DataTables to be filled.
    DataTable customerDataTable = GetCustomers();
    DataTable productDataTable = GetProducts();

    // Create the new DataTableReader.
    using (DataTableReader reader = new(
               new DataTable[] { customerDataTable, productDataTable }))
    {
        // Print the contents of each of the result sets.
        do
        {
            PrintColumns(reader);
        } while (reader.NextResult());
    }

    Console.WriteLine("Press Enter to finish.");
    Console.ReadLine();
}

static DataTable GetCustomers()
{
    // Create sample Customers table, in order
    // to demonstrate the behavior of the DataTableReader.
    DataTable table = new();

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID", typeof(int));
    table.Columns.Add("Name", typeof(string));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { 1, "Mary" });
    table.Rows.Add(new object[] { 2, "Andy" });
    table.Rows.Add(new object[] { 3, "Peter" });
    table.Rows.Add(new object[] { 4, "Russ" });
    return table;
}

static DataTable GetProducts()
{
    // Create sample Products table, in order
    // to demonstrate the behavior of the DataTableReader.
    DataTable table = new();

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID", typeof(int));
    table.Columns.Add("Name", typeof(string));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { 1, "Wireless Network Card" });
    table.Rows.Add(new object[] { 2, "Hard Drive" });
    table.Rows.Add(new object[] { 3, "Monitor" });
    table.Rows.Add(new object[] { 4, "CPU" });
    return table;
}

static void PrintColumns(DataTableReader reader)
{
    // Loop through all the rows in the DataTableReader
    while (reader.Read())
    {
        for (var i = 0; i < reader.FieldCount; i++)
        {
            Console.Write(reader[i] + " ");
        }
        Console.WriteLine();
    }
}
Private Sub TestConstructor()
    ' Create two data adapters, one for each of the two
    ' DataTables to be filled.
    Dim customerDataTable As DataTable = GetCustomers()
    Dim productDataTable As DataTable = GetProducts()

    ' Create the new DataTableReader.
    Using reader As New DataTableReader( _
       New DataTable() {customerDataTable, productDataTable})

        ' Print the contents of each of the result sets.
        Do
            PrintColumns(reader)
        Loop While reader.NextResult()
    End Using

    Console.WriteLine("Press Enter to finish.")
    Console.ReadLine()

End Sub

Private Function GetCustomers() As DataTable
    ' Create sample Customers table, in order
    ' to demonstrate the behavior of the DataTableReader.
    Dim table As New DataTable

    ' Create two columns, ID and Name.
    Dim idColumn As DataColumn = table.Columns.Add("ID", GetType(Integer))
    table.Columns.Add("Name", GetType(String))

    ' Set the ID column as the primary key column.
    table.PrimaryKey = New DataColumn() {idColumn}

    table.Rows.Add(New Object() {1, "Mary"})
    table.Rows.Add(New Object() {2, "Andy"})
    table.Rows.Add(New Object() {3, "Peter"})
    table.Rows.Add(New Object() {4, "Russ"})
    Return table
End Function

Private Function GetProducts() As DataTable
    ' Create sample Products table, in order
    ' to demonstrate the behavior of the DataTableReader.
    Dim table As New DataTable

    ' Create two columns, ID and Name.
    Dim idColumn As DataColumn = table.Columns.Add("ID", GetType(Integer))
    table.Columns.Add("Name", GetType(String))

    ' Set the ID column as the primary key column.
    table.PrimaryKey = New DataColumn() {idColumn}

    table.Rows.Add(New Object() {1, "Wireless Network Card"})
    table.Rows.Add(New Object() {2, "Hard Drive"})
    table.Rows.Add(New Object() {3, "Monitor"})
    table.Rows.Add(New Object() {4, "CPU"})
    Return table
End Function

Private Sub PrintColumns( _
   ByVal reader As DataTableReader)

    ' Loop through all the rows in the DataTableReader.
    Do While reader.Read()
        For i As Integer = 0 To reader.FieldCount - 1
            Console.Write(reader(i).ToString() & " ")
        Next
        Console.WriteLine()
    Loop
End Sub

関連項目