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 se mají kopírovat hodnoty sloupců 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 objektu .

Příklady

Následující příklad ukazuje použití matice, která má správnou 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

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

Můžete předat matici Object , 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, Object které může pole obsahovat. Můžete také předat Object pole, jehož délka je větší než počet sloupců, které jsou obsaženy ve výsledném řádku, v takovém případě další prvky pole zůstávají beze změny volání metody.

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

Platí pro