SqlDataReader.GetOrdinal(String) 方法

定义

在给定列名时获取相应的列序号。

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

列的名称。

返回

从零开始的列序号。

实现

例外

指定的名称不是有效的列名。

示例

下面的示例演示如何使用 GetOrdinal 方法。

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 首先执行区分大小写的查找。 如果失败,在使用数据库排序规则) 完成不区分大小写的比较 (,将进行第二次不区分大小写的搜索。 当比较受区域性特定大小写规则的影响时,可能会出现意外结果。 例如,在土耳其语中,以下示例生成错误的结果,因为采用土耳其语的文件系统没有对“file”中的字母“i”使用语言大小写规则。 如果未找到从零开始的列序号, 方法将 IndexOutOfRange 引发异常。

GetOrdinal 不区分假名宽度。

因为基于序号的查找比命名查找更高效,因此在循环内调用 GetOrdinal 效率低下。 通过调用一次 GetOrdinal 并将结果分配给一个整数变量以供在循环内使用,从而节省时间。

适用于

另请参阅