SqlDataReader.GetOrdinal(String) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在给定列名时获取相应的列序号。
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
并将结果分配给一个整数变量以供在循环内使用,从而节省时间。