Публикация

Как записать текст в поле Blob (большой бинарный объект)?

Бывает необходимо записать в таблицу текст больше 4000 символов. Для этого необходимо использовать поле с типом BLOB.

Вот тестовый пример как это реализовать:
1. Создайте таблицу tbl_BlobFields, добавьте в него поле Blob соответствующего типа.
2. Создайте SelectQuery - sq_BlobFields.
3. Выполните скрипт:

var SelectQuery = Services.GetNewItemByUSI('sq_BlobFields');
var Dataset = SelectQuery.Open();
Dataset.Append();
var Stream = new ActiveXObject('ADODB.Stream');
Stream.CharSet = 'windows-1251';
Stream.Mode = 3;       
Stream.Type = 2;
Stream.Open();
Stream.WriteText('Тестовая строка');
var Field = Dataset.DataFields.ItemsByName('Blob');
Field.SetValAsBlob(Stream);
Stream.Close();
Dataset.Post();

4. Проверьте результат:
SELECT cast(substring(blob, 1, 4000) AS varchar) FROM tbl_blobfields

Еще немного о объекте ADODB.Stream:
Параметр Stream.Type может принимать значения 1(binary) или 2(text), в зависимости от типа данных, содержащихся в файле.

С помощью параметра Stream.CharSet управляют кодировкой чтения/записи данных в файл. Доступные для данной ОС кодировки перечислены в системном реестре HKEY_CLASSES_ROOT\MIME\Database\Charset.

С помощью параметра Stream.Mode осуществляется управление режимом работы с данными файла. Основные принимаемые значения – 1 (чтение – по умолчанию), 2 (запись) и 3 (чтение/запись).

Нравится

Поделиться

0 комментариев
Показать все комментарии