Поделиться через


DataTableReader.GetOrdinal(String) Метод

Определение

Возвращает порядковый номер столбца при наличии заданного имени столбца.

public:
 override int GetOrdinal(System::String ^ name);
public override int GetOrdinal (string name);
override this.GetOrdinal : string -> int
Public Overrides Function GetOrdinal (name As String) As Integer

Параметры

name
String

Имя столбца.

Возвращаемое значение

Порядковый номер столбца (от нуля).

Исключения

Предпринята попытка чтения или доступа к столбцу закрытого объекта DataTableReader.

Заданное имя недопустимо для имени столбца.

Примеры

Если у вас есть только имя столбца, в этом случае имя столбца предоставляется пользователем и необходимо получить сведения из столбца, можно использовать процедуру, подобную приведенной ниже, для извлечения необходимых сведений. В этом примере процедура принимает имя столбца и возвращает данные, содержащиеся в этом столбце для текущей строки в DataTableReader :

private static object GetValueByName(
    DataTableReader reader, string columnName)
{
    // Consider when to use a procedure like this one carefully:
    // if you're going to retrieve information from a column
    // in a loop, it would be better to retrieve the column
    // ordinal once, store the value, and use the methods
    // of the DataTableReader class directly.
    object columnValue;

    try
    {
        int columnOrdinal = reader.GetOrdinal(columnName);
        columnValue = reader.GetValue(columnOrdinal);
    }
    catch (ArgumentException ex)
    {
        // Throw all other errors back out to the caller.
        columnValue = null;
    }
    return columnValue;
}
Private Function GetValueByName( _
   ByVal reader As DataTableReader, _
   ByVal columnName As String) As Object

   ' Consider when to use a procedure like this one carefully:
   ' If you're going to retrieve information from a column
   ' in a loop, it would be better to retrieve the column
   ' ordinal once, store the value, and use the methods
   ' of the DataTableReader class directly. 
   Dim columnValue As Object

   Try
      Dim columnOrdinal As Integer = reader.GetOrdinal(columnName)
      columnValue = reader.GetValue(columnOrdinal)
   Catch ex As ArgumentException
      ' Throw all other errors back out to the caller.
      columnValue = Nothing
   End Try
   Return columnValue
End Function

Комментарии

Так как большинство методов, предоставляемых DataTableReader классом , должны иметь порядковый номер столбца, метод можно использовать GetOrdinal для получения номера столбца с учетом имени столбца.

GetOrdinal сначала выполняет поиск с учетом регистра. В случае сбоя выполняется второй поиск без учета регистра. Если номер столбца не найден IndexOutOfRangeException , возникает исключение .

Метод GetOrdinal не учитывает ширину японской азбуки.

Поиск по порядковым числительным более эффективен, чем поиск по имени, поэтому не рекомендуется использовать метод GetOrdinal в цикле. Экономьте время, вызывая GetOrdinal один раз и назначая результаты целочисленной переменной для использования в цикле

Применяется к