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 |