DataTableReader.GetValues(Object[]) Metod

Definition

Fyller i en matris med objekt med kolumnvärdena för den aktuella raden.

public:
 override int GetValues(cli::array <System::Object ^> ^ values);
public override int GetValues(object[] values);
override this.GetValues : obj[] -> int
Public Overrides Function GetValues (values As Object()) As Integer

Parametrar

values
Object[]

En matris Object där kolumnvärdena ska kopieras DataTableReaderfrån .

Returer

Antalet kolumnvärden som kopierats till matrisen.

Undantag

Indexet som skickades låg utanför intervallet 0 till FieldCount - 1.

Ett försök gjordes att hämta data från en borttagen rad.

Ett försök gjordes att läsa eller komma åt en kolumn i en stängd DataTableReader .

Exempel

I följande exempel visas hur du använder en matris som har rätt storlek för att läsa alla värden från den aktuella raden i den angivna DataTableReader. Dessutom visar exemplet att du använder en matris med fast storlek som kan vara antingen mindre eller större än antalet tillgängliga kolumner.

private static void TestGetValues(DataTableReader reader)
{
    // Given a DataTableReader, use the GetValues
    // method to retrieve a full row of data.
    // Test the GetValues method, passing in an array large
    // enough for all the columns.
    Object[] values = new Object[reader.FieldCount];
    int fieldCount = reader.GetValues(values);

    Console.WriteLine("reader.GetValues retrieved {0} columns.",
        fieldCount);
    for (int i = 0; i < fieldCount; i++)
        Console.WriteLine(values[i]);

    Console.WriteLine();

    // Now repeat, using an array that may contain a different
    // number of columns than the original data. This should work correctly,
    // whether the size of the array is larger or smaller than
    // the number of columns.

    // Attempt to retrieve three columns of data.
    values = new Object[3];
    fieldCount = reader.GetValues(values);
    Console.WriteLine("reader.GetValues retrieved {0} columns.",
        fieldCount);
    for (int i = 0; i < fieldCount; i++)
        Console.WriteLine(values[i]);
}
Private Sub TestGetValues(ByVal reader As DataTableReader)

    ' Given a DataTableReader, use the GetValues
    ' method to retrieve a full row of data.

    ' Test the GetValues method, passing in an array large
    ' enough for all the columns.
    Dim values(reader.FieldCount - 1) As Object
    Dim fieldCount As Integer = reader.GetValues(values)
    Console.WriteLine("reader.GetValues retrieved {0} columns.", _
         fieldCount)
    For i As Integer = 0 To fieldCount - 1
        Console.WriteLine(values(i))
    Next

    Console.WriteLine()

    ' Now repeat, using an array that may contain a different 
    ' number of columns than the original data. This should work correctly,
    ' whether the size of the array is larger or smaller than 
    ' the number of columns.

    ' Attempt to retrieve three columns of data.
    ReDim values(2)
    fieldCount = reader.GetValues(values)
    Console.WriteLine("reader.GetValues retrieved {0} columns.", _
         fieldCount)
    For i As Integer = 0 To fieldCount - 1
        Console.WriteLine(values(i))
    Next
End Sub

Kommentarer

För de flesta program är den här metoden ett effektivt sätt att hämta alla kolumner i stället för att hämta varje kolumn individuellt. Om avsikten GetValues är att hämta alla kolumnvärden från en rad i DataTableReaderger metoden den mest effektiva lösningen.

Du kan skicka en Object matris som innehåller färre än antalet kolumner som finns i den resulterande raden. Endast mängden data som matrisen Object kan innehålla kopieras till matrisen. Du kan också skicka en Object matris vars längd är mer än antalet kolumner som finns i den resulterande raden, i vilket fall de ytterligare matriselementen förblir oförändrade av metodanropet.

Den här metoden placerar DBNull i utdatamatrisen för null-kolumner.

Gäller för