DataTableReader.GetValues(Object[]) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Заполняет массив объектов значениями столбцов текущей строки.
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
Параметры
- values
- Object[]
Массив, Object в который копируются значения столбцов из DataTableReader.
Возвращаемое значение
Количество значений столбцов, скопированных в массив.
Исключения
Переданный индекс находился за пределами диапазона от 0 до FieldCount 1.
Предпринята попытка получить данные из удаленной строки.
Предпринята попытка считывания или доступа к столбцу в закрытом DataTableReader .
Примеры
В следующем примере показано использование массива, который является правильным размером, для чтения всех значений из текущей строки в предоставленной строке DataTableReader. Кроме того, в примере показано использование массива фиксированного размера, который может быть меньше или больше числа доступных столбцов.
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
Комментарии
Для большинства приложений этот метод предоставляет эффективные средства для извлечения всех столбцов, а не извлечения каждого столбца по отдельности. Если вы намерены получить все значения столбцов из строки в DataTableReaderпределах строки, GetValues метод предоставляет наиболее эффективное решение.
Можно передать Object массив, содержащий меньше количества столбцов, содержащихся в результирующей строке. Только объем данных, Object которые может хранить массив, копируется в массив. Можно также передать Object массив, длина которого превышает количество столбцов, содержащихся в результирующей строке, в этом случае дополнительные элементы массива остаются неизменными при вызове метода.
Этот метод помещает DBNull в выходной массив для столбцов NULL.