SqlDataReader.GetOrdinal(String) Метод

Определение

Возвращает порядковый номер столбца по его имени.Gets the column ordinal, given the name of the column.

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

Параметры

name
String

Имя столбца.The name of the column.

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

Порядковый номер столбца (от нуля).The zero-based column ordinal.

Реализации

Исключения

Заданное имя недопустимо для имени столбца.The name specified is not a valid column name.

Примеры

В следующем примере показано использование метода GetOrdinal.The following example demonstrates how to use the GetOrdinal method.

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();
    }
}
Private Sub ReadGetOrdinal(ByVal connectionString As String)
    Dim queryString As String = _
       "SELECT DISTINCT CustomerID FROM dbo.Orders;"

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)
        connection.Open()

        Dim reader As SqlDataReader = command.ExecuteReader()

        ' Call GetOrdinal and assign value to variable.
        Dim customerID As Integer = reader.GetOrdinal("CustomerID")

        ' Use variable with GetString inside of loop.
        While reader.Read()
            Console.WriteLine("CustomerID={0}", reader.GetString(customerID))
        End While

        ' Call Close when done reading.
        reader.Close()
    End Using
End Sub

Комментарии

GetOrdinal сначала выполняет поиск с учетом регистра.GetOrdinal performs a case-sensitive lookup first. В случае сбоя происходит второй Поиск без учета регистра (сравнение без учета регистра выполняется с использованием параметров сортировки базы данных).If it fails, a second, case-insensitive search occurs (a case-insensitive comparison is done using the database collation). Непредвиденные результаты могут возникать, если сравнение зависит от правил регистров, зависящих от языка и региональных параметров.Unexpected results can occur when comparisons are affected by culture-specific casing rules. Например, в турецком языке в следующем примере выдаются неверные результаты, поскольку в файловой системе в турецком языке не используются лингвистические правила регистров букв "i" в "File".For example, in Turkish, the following example yields the wrong results because the file system in Turkish does not use linguistic casing rules for the letter 'i' in "file". Метод вызывает исключение IndexOutOfRange, если порядковый номер столбца, начинающийся с нуля, не найден.The method throws an IndexOutOfRange exception if the zero-based column ordinal is not found.

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

Поиск по порядковым числительным более эффективен, чем поиск по имени, поэтому не рекомендуется использовать метод GetOrdinal в цикле.Because ordinal-based lookups are more efficient than named lookups, it is inefficient to call GetOrdinal within a loop. Для экономии времени вызовите метод GetOrdinal один раз и назначьте полученные результаты целочисленной переменной для использования в цикле.Save time by calling GetOrdinal once and assigning the results to an integer variable for use within the loop.

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

Дополнительно