Compartilhar via


DataTableReader.GetOrdinal(String) Método

Definição

Obtém a ordinal da coluna, de acordo com o nome da coluna.

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

Parâmetros

name
String

O nome da coluna.

Retornos

O ordinal da coluna baseado em zero.

Exceções

Foi feita uma tentativa de ler ou acessar uma coluna em um DataTableReader fechado.

O nome especificado não é um nome de coluna válido.

Exemplos

Se você tiver apenas um nome de coluna, nesse caso, o nome da coluna for fornecido pelo usuário e você precisar recuperar informações da coluna, poderá usar um procedimento como o seguinte para extrair as informações necessárias. Neste exemplo, o procedimento aceita um nome de coluna e retorna os dados contidos nessa coluna para a linha atual no 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

Comentários

Como a maioria dos métodos fornecidos pela DataTableReader classe deve ser fornecida com um número de coluna ordinal, você pode usar o GetOrdinal método para recuperar o número da coluna, dado o nome da coluna.

GetOrdinal executa uma pesquisa que diferencia maiúsculas de minúsculas primeiro. Se falhar, uma segunda pesquisa que não diferencia maiúsculas de minúsculas será feita. Se o número da coluna não for encontrado, um IndexOutOfRangeException será gerado.

GetOrdinal não distingue largura de kana.

Como pesquisas baseadas em ordinais são mais eficientes do que pesquisas por nome, é ineficiente chamar GetOrdinal dentro de um loop. Economize tempo chamando GetOrdinal uma vez e atribuindo os resultados a uma variável de inteiro para uso dentro do loop

Aplica-se a