GetOrdinal
Метод предоставляет порядковый номер указанного именованного поля текущей строки выборки данных. Поиск именованного поля выполняется сначала с учетом регистра, в случае неудачи производится повторный поиск уже без учета регистра.
Синтаксис
public abstract int GetOrdinal(string name);
name – имя (в том числе и алиасное) поля в текущей строке выборки данных.
Возвращаемое значение
Порядковый номер поля с указанным именем (значение типа System.Int32) текущей строки выборки данных (отсчет начинается с 0).
Для неименованных полей узнать их порядковый номер нельзя.
Для полей с одинаковыми именами, но разными владельцами (например, auto.personid, person.personid) в одной выборке возвращается порядковый номер первого найденного поля.
Для полей с одинаковыми именами типа select 100 as aaa, 200 as aaa возвращается порядковый номер первого найденного поля.
Исключения
IndexOutOfRangeException | Поле с таким именем не существует. |
Пример
// C#
using System;
using System.Data;
using System.Data.Common;
class GetOrdinal
{
static void Main()
{
// Создание фабрики классов провайдера
DbProviderFactory factory =
DbProviderFactories.GetFactory("System.Data.LinterClient");
// Соединение с БД
DbConnection con = factory.CreateConnection();
con.ConnectionString =
"Data Source=LOCAL;User ID=SYSTEM;Password=MANAGER8";
con.Open();
// Создание объекта DbCommand
DbCommand cmd = factory.CreateCommand();
cmd.Connection = con;
// Формирование текста SQL-запроса
cmd.CommandText =
"Select model, sysdate as \"Текущая дата\" from auto limit 2";
// Выполнение SQL-запроса
DbDataReader reader = cmd.ExecuteReader();
// Обработка результатов запроса
int fieldOrdinal0 = reader.GetOrdinal("model");
int fieldOrdinal1 = reader.GetOrdinal("Текущая дата");
Console.WriteLine("| {0} | {1} |", fieldOrdinal0, fieldOrdinal1);
// Освобождение ресурсов
reader.Dispose();
cmd.Dispose();
con.Dispose();
}
}
Результат выполнения примера:
| 0 | 1 |