Я пытаюсь вставить двоичные данные в столбец BLOB-объектов
PackedStr:=GZCompressStr(tmpStr);
AssignFile(F,'c:\RequestHeaders.bin');
Rewrite(F,1);
BlockWrite(F,PackedStr[1],length(PackedStr));
CloseFile(F);
if SQLite3_Bind_Blob(Stmt,ParamNum,@PackedStr[1],length(PackedStr),0)<>SQLITE_OK then
RaiseError('Error binding parameter', '');
iStepResult := Sqlite3_step(Stmt);
if (iStepResult <> SQLITE_DONE) then
RaiseError('Error executing SQL statement', SQL);
SQLite3_Reset(Stmt);
Нет ошибок, строка вставлена, но данные, фактически сохраненные в столбце, не соответствуют данным в файле.
Я проверил, сохранен данные с sqlite3_column_blob и с внешним инструментом, оба возвращают одни и те же данные с оригинальным размером, но байты данных имеют много различий с сохраненным файлом.
GZDecompressStr не может распаковать данные столбца, но распаковать данные из файла без проблем.
Как скажем SQLite, хранить данные как есть, не меняя их?