Я использую Flex 4 Air (SDK 4.5) и SQLite для хранения больших двоичных объектов (png-файлов), используя этот код:
sql = "INSERT INTO pages (id, data) VALUES (:id, :data)";
sqlStatement.text = sql;
sqlStatement.parameters[":id"] = file.name;
sqlStatement.parameters[":data"] = file.data;
sqlStatement.execute();
Таблица определена так:
CREATE TABLE "pages" ("id" varchar, "data" blob)
Проблема в том, что к хранимым данным добавляется 3-5 дополнительных байтов в начале блока данных. (Если я сохраняю 1000 байтов png, данные, хранящиеся в BLOB-объекте, обычно становятся 1004 байтами, что подтверждается проверкой файла SQLite вне среды Flex).
При чтении данных обратно, используя ...
sql = "SELECT id, CAST(data AS ByteArray) AS data FROM pages"
... Я должен обрезать данные ByteArray на 3-5 байтов, чтобы получить правильное изображение.
Clue