var imageData:ByteArray = new ByteArray();
var headshotStatement:SQLStatement = new SQLStatement();
headshotStatement.sqlConnection = dbConnection;
var headshotStr:String = "SELECT headshot FROM ac_images WHERE id = " + idx;
headshotStatement.text = headshotStr;
headshotStatement.execute();
Ошибка указывает на последнюю строку в этом блоке.Я нашел несколько ссылок в Интернете, где люди не могут выбрать большой двоичный объект с помощью AS3, в который были вставлены данные из внешней программы, что является моей точной ситуацией.
Точная трассировка ошибки:
RangeError: Error #2006: The supplied index is out of bounds.
at flash.data::SQLStatement/internalExecute()
at flash.data::SQLStatement/execute()
at edu.bu::DataManager/getHeadshotImageData()[omitted/DataManager.as:396]
at edu.bu::CustomStudentProfileEditorWindow/editStudent()[omitted/CustomStudentProfileEditorWindow.mxml:194]
at edu.bu::CustomStudentProfileEditorWindow/profileEditor_completeHandler()[omitted/CustomStudentProfileEditorWindow.mxml:37]
at edu.bu::CustomStudentProfileEditorWindow/___CustomStudentProfileEditorWindow_Window1_creationComplete()[omitted/CustomStudentProfileEditorWindow.mxml:9]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\UIComponent.as:12528]
at mx.core::UIComponent/set initialized()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\UIComponent.as:1627]
at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:759]
at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\4.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1072]
Есть идеи, что может быть не так с данными, вызывающими удушение AS3?
Редактировать: Я пытался вставить те же данные в поле двоичного типа, используя SQLiteМенеджер 3.5 для OS X с тем же результатом.Я работаю с JPG, собираюсь попробовать другие форматы изображений, хотя я не могу догадаться, какой из предоставленных индексов выходит за пределы, учитывая, что попытка перейти к определению просто утверждает, что он получен из SWC, и я могуне вижуВцепившись в соломинку, прежде чем я распространю данные в zip-архиве и распакую их на лету, чего я не хочу делать.
Edit 2, Workaround Edition: А пока яМы написали быстрое окно MXML, которое запрашивает изображения и вставляет данные в базу данных.Хотелось бы знать, почему другое приложение не может хранить BLOB-данные способом, понятным SQLStatement.По сути, я настраиваю несколько кнопок, которые запрашивают пути файлов к нужным изображениям в базе данных, считывая их с помощью readBytes () в ByteArray, и сохраняя их в базе данных SQLite с помощью SQLStatement.Затем я могу без труда прочитать изображение обратно.
Редактировать 3: Вот изображение структуры таблицы.Обратите внимание, что эта же таблица успешно используется, когда Flash выполняет вставку образа базы данных, в отличие от какого-либо другого инструмента, который правильно сохраняет данные в поле BLOB для любого другого приложения, кроме Flash ...