SqlDataReader.GetOrdinal(String) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.
Implementações
Exceções
O nome especificado não é um nome de coluna válido.
Exemplos
O exemplo a seguir demonstra como usar o GetOrdinal método .
using Microsoft.Data.SqlClient;
class Program
{
static void Main()
{
string str = "Data Source=(local);Initial Catalog=Northwind;"
+ "Integrated Security=SSPI";
ReadGetOrdinal(str);
}
private static void ReadGetOrdinal(string connectionString)
{
string queryString = "SELECT DISTINCT CustomerID FROM dbo.Orders;";
using (SqlConnection connection =
new SqlConnection(connectionString))
{
SqlCommand command =
new SqlCommand(queryString, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
// Call GetOrdinal and assign value to variable.
int customerID = reader.GetOrdinal("CustomerID");
// Use variable with GetString inside of loop.
while (reader.Read())
{
Console.WriteLine("CustomerID={0}", reader.GetString(customerID));
}
// Call Close when done reading.
reader.Close();
}
}
}
Comentários
GetOrdinal
executa uma pesquisa que diferencia maiúsculas de minúsculas primeiro. Se falhar, ocorrerá uma segunda pesquisa que não diferencia maiúsculas de minúsculas (uma comparação que não diferencia maiúsculas de minúsculas é feita usando a ordenação de banco de dados). Os resultados inesperados podem ocorrer quando as comparações são afetadas por regras de maiúsculas específicas de cultura. Por exemplo, em turco, o exemplo a seguir gera os resultados errados porque o sistema de arquivos em turco não usa regras de maiúsculas e minúsculas linguísticas para a letra "i" em "arquivo". O método gerará uma exceção IndexOutOfRange
se o ordinal de coluna baseado em zero não for encontrado.
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 o GetOrdinal
uma vez e atribuindo os resultados a uma variável de inteiro para uso no loop.