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