DataTableReader.GetValues(Object[]) Metoda

Definice

Naplní pole objektů hodnotami sloupců aktuálního řádku.

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

Parametry

values
Object[]

Pole Object , do kterého chcete zkopírovat hodnoty sloupce z objektu DataTableReader.

Návraty

Počet hodnot sloupců zkopírovaných do pole.

Výjimky

Předaný index byl mimo rozsah 0 až FieldCount 1.

Došlo k pokusu o načtení dat z odstraněného řádku.

Došlo k pokusu o čtení nebo přístup ke sloupci v uzavřeném DataTableReader sloupci .

Příklady

Následující příklad ukazuje použití matice, která je správná velikost, ke čtení všech hodnot z aktuálního řádku v zadaném DataTableReader. Kromě toho ukázka ukazuje použití pole s pevnou velikostí, které může být menší nebo větší než počet dostupných sloupců.

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

Poznámky

U většiny aplikací poskytuje tato metoda efektivní způsob načítání všech sloupců místo individuálního načítání jednotlivých sloupců. Pokud vaším záměrem je načíst všechny hodnoty sloupců z řádku v rámci DataTableReader, GetValues metoda poskytuje nejúčinnější řešení.

Můžete předat Object matici, která obsahuje méně než počet sloupců obsažených ve výsledném řádku. Do pole se zkopíruje pouze množství dat, které Object pole může obsahovat. Můžete také předat Object matici, jejíž délka je větší než počet sloupců obsažených ve výsledném řádku, v takovém případě další prvky pole zůstávají nezměněny voláním metody.

Tato metoda umístí DBNull výstupní pole pro sloupce s hodnotou null.

Platí pro