SqlDataReader.GetOrdinal(String) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
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
Parameters
- name
- String
The name of the column.
Returns
The zero-based column ordinal.
Implements
Exceptions
The name specified is not a valid column name.
Examples
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
Remarks
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. 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". The method throws an IndexOutOfRange
exception if the zero-based column ordinal is not found.
GetOrdinal
is kana-width insensitive.
Because ordinal-based lookups are more efficient than named lookups, it is inefficient to call GetOrdinal
within a loop. Save time by calling GetOrdinal
once and assigning the results to an integer variable for use within the loop.