DataTableReader.GetValues(Object[]) Metódus

Definíció

Egy objektumtömböt tölt fel az aktuális sor oszlopértékeivel.

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

Paraméterek

values
Object[]

Egy tömb, Object amelybe az oszlopértékeket ki szeretné másolni a DataTableReader.

Válaszok

A tömbbe másolt oszlopértékek száma.

Kivételek

Az átadott index a 0 FieldCount és 1 közötti tartományon kívül volt.

Egy törölt sor adatainak lekérésére tett kísérlet történt.

Egy bezárt DataTableReader oszlop olvasására vagy elérésére tett kísérletet.

Példák

Az alábbi példa egy megfelelő méretű tömb használatát mutatja be a megadott DataTableReadersor összes értékének beolvasásához. A minta emellett egy rögzített méretű tömb használatát is szemlélteti, amely kisebb vagy nagyobb lehet, mint a rendelkezésre álló oszlopok száma.

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

Megjegyzések

A legtöbb alkalmazás esetében ez a módszer hatékony eszközt biztosít az összes oszlop beolvasásához, ahelyett, hogy egyenként kérne le minden oszlopot. Ha a cél az összes oszlopérték lekérése a DataTableReadersoron belül, a GetValues metódus a leghatékonyabb megoldást nyújtja.

Olyan tömböt adhat át Object , amely kevesebb oszlopot tartalmaz, mint az eredményként kapott sor. A tömbbe csak a tömb által tartható adatok Object mennyisége lesz átmásolva. Olyan tömböt is átadhat Object , amelynek hossza nagyobb, mint az eredményül kapott sorban található oszlopok száma, ebben az esetben a további tömbelemek változatlanok maradnak a metódushívással.

Ez a metódus a null oszlopok kimeneti tömbjében helyezi el DBNull .

A következőre érvényes: