OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 11:15

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Работа с BLOB чере ODBC
СообщениеДобавлено: Вторник, 12 Июнь, 2007 10:14 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Кто-нибудь имел опыт работы с темой?
Как читать BLOB — вроде бы понятно. А вот записать в таблицу не выходит. Функция LOAD_FILE работает только на стороне сервера, а примеры для той же Delphi используют какой-то специЯльный компонент.
Правда, ещё не пробовал представить BLOB в виде длинной строки. Не очень нравится такое, но вдруг пройдёт.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 12 Июнь, 2007 11:47 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Вообще говоря, в SQL должен быть способ закодировать двоичные данные текстовыми. Что-то вроде того, как это делается в CGI в адресной строке браузера - %число%число... Только в другом формате.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 13 Июнь, 2007 15:49 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Илья Ермаков писал(а):
Вообще говоря, в SQL должен быть способ закодировать двоичные данные текстовыми. Что-то вроде того, как это делается в CGI в адресной строке браузера - %число%число... Только в другом формате.

Да, там ещё нужно "экранировать" служебные символы, заменяя 0 на "\0", или что-то вроде.
Но у меня вышло всё гораздо интереснее - встроенный SQL разрешил проблему легко и просто.
Я завёл глобальную переменную
Код:
blob* : SqlDB.Blob;

далее, загрузил в неё файл
Код:
f := Files.dir.Old(Files.dir.This(path), name, TRUE);
r := f.NewReader(NIL);
blob.len := f.Length();
NEW(blob.data, blob.len);
r.ReadBytes(blob.data, 0, LEN(blob.data)-1);

и выполнил запрос к БД:
Код:
CmvsSql.Dbquery("INSERT INTO module_ver (module, date, time, content) VALUES (:CmvsCheck.moduleid, :CmvsCheck.module_ver.date, :CmvsCheck.module_ver.time, :CmvsCheck.blob)");


Добавлю, что база на MySQL 5, ODBC 3.51, Black Box 15re026.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB