DataTableReader.GetValues(Object[]) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Fyller i en matris med objekt med kolumnvärdena för den aktuella raden.
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
Parametrar
- values
- Object[]
En matris Object där kolumnvärdena ska kopieras DataTableReaderfrån .
Returer
Antalet kolumnvärden som kopierats till matrisen.
Undantag
Indexet som skickades låg utanför intervallet 0 till FieldCount - 1.
Ett försök gjordes att hämta data från en borttagen rad.
Ett försök gjordes att läsa eller komma åt en kolumn i en stängd DataTableReader .
Exempel
I följande exempel visas hur du använder en matris som har rätt storlek för att läsa alla värden från den aktuella raden i den angivna DataTableReader. Dessutom visar exemplet att du använder en matris med fast storlek som kan vara antingen mindre eller större än antalet tillgängliga kolumner.
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
Kommentarer
För de flesta program är den här metoden ett effektivt sätt att hämta alla kolumner i stället för att hämta varje kolumn individuellt. Om avsikten GetValues är att hämta alla kolumnvärden från en rad i DataTableReaderger metoden den mest effektiva lösningen.
Du kan skicka en Object matris som innehåller färre än antalet kolumner som finns i den resulterande raden. Endast mängden data som matrisen Object kan innehålla kopieras till matrisen. Du kan också skicka en Object matris vars längd är mer än antalet kolumner som finns i den resulterande raden, i vilket fall de ytterligare matriselementen förblir oförändrade av metodanropet.
Den här metoden placerar DBNull i utdatamatrisen för null-kolumner.