DataTableReader.GetValues(Object[]) Metodo

Definizione

Popola una matrice di oggetti con i valori della colonna della riga corrente.

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

Parametri

values
Object[]

Matrice di Object in cui copiare i valori delle colonne dalla classe DataTableReader.

Restituisce

Numero di valori delle colonne copiati nella matrice.

Eccezioni

L'indice passato non rientrava nell'intervallo compreso tra 0 e FieldCount -1.

Si è tentato di recuperare dati da una riga eliminata.

È stato effettuato un tentativo di lettura o di accesso a una colonna in una classe DataTableReader chiusa.

Esempio

Nell'esempio seguente viene illustrato l'uso di una matrice con le dimensioni corrette per leggere tutti i valori della riga corrente nell'oggetto fornito DataTableReader. Inoltre, l'esempio illustra l'uso di una matrice a dimensione fissa che può essere minore o maggiore del numero di colonne disponibili.

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

Commenti

Per la maggior parte delle applicazioni, questo metodo offre un modo efficiente per recuperare tutte le colonne, anziché recuperare singolarmente ogni colonna. Se la finalità è recuperare tutti i valori di colonna da una riga all'interno di DataTableReader, il GetValues metodo fornisce la soluzione più efficiente.

È possibile passare una Object matrice contenente meno del numero di colonne contenute nella riga risultante. Solo la quantità di dati che la Object matrice può contenere viene copiata nella matrice. È anche possibile passare una Object matrice la cui lunghezza è maggiore del numero di colonne contenute nella riga risultante, nel qual caso gli elementi di matrice aggiuntivi rimangono invariati dalla chiamata al metodo.

Questo metodo inserisce DBNull nella matrice di output per le colonne Null.

Si applica a