GetChar
Метод предоставляет приведенный к типу данных char (в UTF-16 кодировке) первый символ указанного поля текущей строки выборки данных. Т.к. в текущей версии ADO.NET-провайдера приведение типов не выполняется, то корректно метод может применяться только к полям с типом данных char, varchar, nchar, nvarchar, иначе будет выдано исключение.
Синтаксис
public abstract char GetChar(int ordinal);
ordinal
– порядковый номер поля в текущей строке выборки данных (отсчет начинается с 0
).
Возвращаемое значение
Первый символ указанного поля текущей выборки данных.
Исключения
InvalidCastException | Невозможно преобразовать тип данных указанного столбца к типу данных char. | |
IndexOutOfRangeException | Задан порядковый номер несуществующего столбца. | |
InvalidOperationException | Не установлена текущая строка выборки данных (необходимо выполнить метод Read ()). |
Примеры
1)
// C# using System; using System.Data; using System.Data.Common; class GetChar { 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 'ЛИНТЕР'"; // Выполнение SQL-запроса DbDataReader reader = cmd.ExecuteReader(); // Обработка результатов запроса Char value; while (reader.Read()) { value = reader.GetChar(0); Console.WriteLine(value); } // Освобождение ресурсов reader.Dispose(); cmd.Dispose(); con.Dispose(); } } Результат выполнения примера: Л
2) Подсчитать в выборке данных (из таблицы AUTO) количество автомобилей, название которых начинается с буквы F, и вывести их список на консоль.
Примечание
Пример приведен только для иллюстрации использования метода, т.к. данная информация может быть получена с помощью агрегатной функции count
() в SELECT-запросе.
// C# using System; using System.Data; using System.Data.Common; class GetChar { 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 from auto"; // Выполнение SQL-запроса DbDataReader reader = cmd.ExecuteReader(); // Обработка результатов запроса int count = 0; Console.WriteLine("Автомобили, название которых начинаются с буквы F:"); while (reader.Read()) { if (reader.GetChar(0) == 'F') { Console.WriteLine(reader.GetString(0)); count++; } } Console.WriteLine("Количество авто, название которых начинаются с буквы F: " + count); // Освобождение ресурсов reader.Dispose(); cmd.Dispose(); con.Dispose(); } } Результат выполнения примера: Автомобили, название которых начинаются с буквы F: FULVIA SPORT 1600 FULVIA SPORT 1600 FULVIA SPORT 1600 FULVIA SPORT 1600 FULVIA SPORT 1600 FULVIA SPORT 1600 FULVIA SPORT 1600 FULVIA SPORT 1600 Количество авто, название которых начинаются с буквы F: 8