GetChars
Метод предоставляет приведенный к типу данных char[] (в UTF-16 кодировке) массив данных указанного поля текущей строки выборки данных. Т.к. в текущей версии ADO.NET-провайдера приведение типов не выполняется, то корректно метод может применяться только к полям с типом данных char, varchar, nchar, nvarchar, иначе будет выдано исключение.
Синтаксис
public abstract long GetChars( int ordinal, long dataOffset, char[] buffer, int bufferOffset, int length );
ordinal
– источник данных (порядковый номер поля в текущей строке выборки данных (отсчет начинается с 0
)).
dataOffset
– местоположение извлекаемых данных в источнике данных (номер позиции в указанном поле текущей строки, начиная с которой должны извлекаться данные (отсчет начинается с 0
)).
buffer
– приемник данных (буфер в памяти для размещения извлеченных данных).
bufferOffset
– местоположение данных в приемнике данных (номер позиции в приемнике данных, начиная с которой должно выполняться размещение извлеченных данных (отсчет начинается с 0
)).
length
– количество запрашиваемых данных в символах.
Возвращаемое значение
Количество извлеченных символов (может отличаться от количества запрошенных символов, если источник данных не может их предоставить в полном объеме или достигнут конец буфера приемника).
Если значение buffer
равно null, то возвращается длина запрошенного поля (независимо от заданного в нем смещения). Сами данные не предоставляются.
Исключения
InvalidCastException | Невозможно преобразовать тип данных указанного столбца к типу данных char[]. | |
IndexOutOfRangeException | Задан порядковый номер несуществующего столбца. | |
InvalidOperationException | Не установлена текущая строка выборки данных (необходимо выполнить метод Read ()). | |
ArgumentException | Местоположение в источнике за пределами поля. | |
ArgumentException | Местоположение в приемнике за пределами буфера. | |
ArgumentException | Недопустимая длина. |
Пример
// C#
using System;
using System.Data;
using System.Data.Common;
using System.Text;
class GetChars
{
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 'ADO.NET-провайдер СУБД ЛИНТЕР'";
// Выполнение SQL-запроса
DbDataReader reader = cmd.ExecuteReader();
// Обработка результатов запроса
Char[] value = new Char[11];
while (reader.Read())
{
reader.GetChars(0, 18, value, 0, 11);
}
Console.WriteLine(new String(value));
// Освобождение ресурсов
reader.Dispose();
cmd.Dispose();
con.Dispose();
}
}
Результат выполнения примера:
СУБД ЛИНТЕР