Илья Ермаков писал(а):
Вообще говоря, в 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.