OberonCore https://forum.oberoncore.ru/ |
|
Работа с BLOB чере ODBC https://forum.oberoncore.ru/viewtopic.php?f=5&t=511 |
Страница 1 из 1 |
Автор: | Иван Кузьмицкий [ Вторник, 12 Июнь, 2007 10:14 ] |
Заголовок сообщения: | Работа с BLOB чере ODBC |
Кто-нибудь имел опыт работы с темой? Как читать BLOB — вроде бы понятно. А вот записать в таблицу не выходит. Функция LOAD_FILE работает только на стороне сервера, а примеры для той же Delphi используют какой-то специЯльный компонент. Правда, ещё не пробовал представить BLOB в виде длинной строки. Не очень нравится такое, но вдруг пройдёт. |
Автор: | Илья Ермаков [ Вторник, 12 Июнь, 2007 11:47 ] |
Заголовок сообщения: | |
Вообще говоря, в SQL должен быть способ закодировать двоичные данные текстовыми. Что-то вроде того, как это делается в CGI в адресной строке браузера - %число%число... Только в другом формате. |
Автор: | Иван Кузьмицкий [ Среда, 13 Июнь, 2007 15:49 ] |
Заголовок сообщения: | |
Илья Ермаков писал(а): Вообще говоря, в 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. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |