OleDbDataReader.GetOrdinal(String) 方法

定义

在给定列名时获取相应的列序号。Gets the column ordinal, given the name of the column.

public:
 virtual int GetOrdinal(System::String ^ name);
public int GetOrdinal (string name);
override this.GetOrdinal : string -> int
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.

public static void ReadData(string connectionString)
{
    string queryString = "SELECT DISTINCT CustomerID FROM Orders";
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbCommand command = new OleDbCommand(queryString, connection);

        connection.Open();
        OleDbDataReader reader = command.ExecuteReader();

        int customerID = reader.GetOrdinal("CustomerID");

        while (reader.Read())
        {
            Console.WriteLine("CustomerID={0}", reader.GetString(customerID));
        }
        reader.Close();
    }
}
Public Sub ReadData(ByVal connectionString As String)
    Dim queryString As String = "SELECT DISTINCT CustomerID FROM Orders"

    Using connection As New OleDbConnection(connectionString)
        Dim command As New OleDbCommand(queryString, connection)

        connection.Open()

        Dim reader As OleDbDataReader = command.ExecuteReader()

        Dim customerID As Integer = reader.GetOrdinal("CustomerID")
        While reader.Read()
            Console.WriteLine("CustomerID={0}", reader.GetString(customerID))
        End While
        reader.Close()
    End Using
End Sub

注解

GetOrdinal首先执行区分大小写的查找。GetOrdinal performs a case-sensitive lookup first. 如果失败,将进行第二个不区分大小写的搜索。If it fails, a second case-insensitive search is made. 如果找不到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 one time and assigning the results to an integer variable for use within the loop.

适用于

另请参阅