ByteArray для отображения изображения Flex - SQLite - PullRequest
0 голосов
/ 02 августа 2011

Я недавно выяснил, как использовать базу данных SQLite с Flex.Теперь у меня проблемы с отображением данных.Я попробовал несколько обязательных стратегий, и я в основном потерпел неудачу.У меня были неопределенные ошибки свойств, неиспользуемые ошибки, и наконец!Код без ошибок!Также код без отображаемого изображения.Любая помощь ценится как всегда.Вот мой код до сих пор;Я стараюсь держать это в чистоте, Async, и я оставил одну или две неиспользованные переменные из-за того, что возился с ними.Спасибо за понимание.

            <?xml version="1.0" encoding="utf-8"?>
            <s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
            xmlns:s="library://ns.adobe.com/flex/spark"

            title="NM1"
            >

          <fx:Declarations>
               <!-- Place non-visual elements (e.g., services, value objects) here -->
          </fx:Declarations>

<fx:Script>
    <![CDATA[
        import flash.data.SQLConnection;
        import flash.data.SQLResult;
        import flash.data.SQLStatement;
        import flash.filesystem.File;

        import mx.collections.ArrayCollection;

        private var conn:SQLConnection;
        private var createStmt:SQLStatement;
        private var selectStmt:SQLStatement;
        [bindable] private var dataField:ArrayCollection;
        [bindable] private var row:Object;
        [bindable] private var pngIndex:int; 
        [bindable] public  var pngTitle:String; 
        [bindable] private var pngByteArray:ByteArray; 

        private function init():void
        {
            conn = new SQLConnection();
            conn.addEventListener (SQLEvent.OPEN, openSuccess);
            conn.addEventListener (SQLErrorEvent.ERROR, openFailure);

            var dbFile:File = File.applicationDirectory.resolvePath("assets/NM.sqlite");
            conn.openAsync(dbFile);
        }

        private function openSuccess(event:SQLEvent):void
        {
            conn.removeEventListener(SQLEvent.OPEN, openSuccess);
            conn.removeEventListener(SQLErrorEvent.ERROR, openFailure);

            getData();
        }

        private function openFailure(event:SQLErrorEvent):void
        {
            conn.removeEventListener(SQLEvent.OPEN, openSuccess);
            conn.removeEventListener(SQLErrorEvent.ERROR, openFailure);

            // Make an alert Dialog
            // = "Error opening database";

            trace("event.error.message:", event.error.message);
            trace("event.error.details:", event.error.details);
        }

        private function getData():void
        {
            //status = "Loading data";

            selectStmt = new SQLStatement();
            selectStmt.sqlConnection = conn;
            var sql:String = "SELECT Picture FROM Data WHERE 'Index' = 0";
            selectStmt.text = sql;

            selectStmt.addEventListener(SQLEvent.RESULT, selectResult);
            selectStmt.addEventListener(SQLErrorEvent.ERROR, selectError);

            selectStmt.execute();
        }

        private function selectResult(event:SQLEvent):void
        {
            //status = "Data loaded";

            selectStmt.removeEventListener(SQLEvent.RESULT, selectResult);
            selectStmt.removeEventListener(SQLErrorEvent.ERROR, selectError);

            var result:SQLResult = selectStmt.getResult();
            // dataField = new ArrayCollection(selectStmt.getResult().data);


            if (result.data != null) {
                row = result.data[0];
                pngIndex = result.data[0].Index;
                pngTitle = result.data[0].Title;
                pngByteArray = result.data[0].Picture;

                Pic.source = pngByteArray;

            }

        }

        private function selectError(event:SQLErrorEvent):void
        {
            //status = "Error loading data";

            selectStmt.removeEventListener(SQLEvent.RESULT, selectResult);
            selectStmt.removeEventListener(SQLErrorEvent.ERROR, selectError);

            trace("SELECT error:", event.error);
            trace("event.error.message:", event.error.message);
            trace("event.error.details:", event.error.details);
        } 



    ]]>
</fx:Script>


<s:Image id="Pic" x="0" y="0" width="263" height="99"/>
<s:TextArea id="text1" x="0" y="313"
            />

РЕДАКТИРОВАТЬ Я обновил код сейчас, с идеальным, без ошибок код, который не отображает мое изображение.Помогите!!

1 Ответ

0 голосов
/ 02 ноября 2012

Убедитесь, что вы вызываете первую функцию в функции initialize () при запуске вашей программы!Я забыл это где-то в моем тестировании кода.: /

...