DataTableReader.GetValues(Object[]) Methode

Definition

Füllt ein Array von Objekten mit den Spaltenwerten der aktuellen Zeile auf.

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

Parameter

values
Object[]

Ein Array vom Typ Object, in das die Spaltenwerte aus dem DataTableReader kopiert werden sollen.

Gibt zurück

Int32

Die Anzahl der in das Array kopierten Spaltenwerte.

Ausnahmen

Der übergebene Index lag außerhalb des Bereichs von 0 bis FieldCount -1.

Es wurde versucht, Daten aus einer gelöschten Zeile abzurufen.

Es wurde versucht, eine Spalte in einem geschlossenen DataTableReader zu lesen oder auf sie zuzugreifen.

Beispiele

Im folgenden Beispiel wird die Verwendung eines Arrays veranschaulicht, das die richtige Größe aufweist, um alle Werte aus der aktuellen Zeile in der angegebenen DataTableReaderZeile zu lesen. Darüber hinaus veranschaulicht das Beispiel die Verwendung eines Arrays mit fester Größe, das entweder kleiner oder größer als die Anzahl der verfügbaren Spalten sein könnte.

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

Hinweise

Für die meisten Anwendungen bietet diese Methode eine effiziente Möglichkeit zum Abrufen aller Spalten, anstatt jede Spalte einzeln abzurufen. Wenn Ihre Absicht besteht, alle Spaltenwerte aus einer Zeile innerhalb der DataTableReaderZeile abzurufen, stellt die GetValues Methode die effizienteste Lösung bereit.

Sie können ein Object Array übergeben, das weniger als die Anzahl der Spalten enthält, die in der resultierenden Zeile enthalten sind. Nur die Datenmenge, die das Object Array enthalten kann, wird in das Array kopiert. Sie können auch ein Object Array übergeben, dessen Länge mehr als die Anzahl der Spalten ist, die in der resultierenden Zeile enthalten sind, in diesem Fall bleiben die zusätzlichen Arrayelemente vom Methodenaufruf unverändert.

Diese Methode platziert DBNull sich im Ausgabearray für Nullspalten.

Gilt für