actionscript从sqlite表填充列表

时间:2012-06-27 23:31:04

标签: sqlite adobe flash-builder

使用Adobe Flash Builder 4.6

以下代码是我用来尝试获取actionscript来填充sqlite表中的列表a的代码。它会返回正确数量的记录,但会将结果显示为:     [对象]     [对象]     [object Object]

有人可以告诉我我的错误吗?

                    private var strGetDBName:String = "CPRInstr.db";
        private var strGetCurrentTableName:String = "lkStates";

        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 function init():void
        {
            conn = new SQLConnection();
            conn.addEventListener(SQLEvent.OPEN, openSuccess);
            //conn.addEventListener(SQLErrorEvent.ERROR, openFailure);
            var dbFile:File = File.applicationDirectory.resolvePath(strGetDBName);
            conn.openAsync(dbFile);
        }

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

        private function getData():void
        {
            var select:SQLStatement = new SQLStatement();
            select.sqlConnection = conn;
            //select.text = "SELECT id, txtState, txtAbbrev FROM " + strGetCurrentTableName;
            select.text = "SELECT id, txtState FROM lkStates";
            select.addEventListener(SQLEvent.RESULT, selectResult);
            //select.addEventListener(SQLErrorEvent.ERROR, selectError);
            select.execute();
        }

        private function selectResult(event:SQLEvent):void
        {
            var result:SQLResult = null;
            result = event.currentTarget.getResult(); 

            if(result.data)
            {
                list.dataProvider = new ArrayCollection(result.data);
            }
        }

2 个答案:

答案 0 :(得分:0)

这对我有用,我试图匹配你的变量,例如。

var result:SQLResult = select.getResult();
list.dataProvider = new DataProvider(result.data);

if(result.data)
{
   for(var i:int = 0; i < result.data.length; i++)
    {
      var tState:Object = result.data[i];
      trace("var1 "+tState.var1+"var2 "+tState.var2...etc)
    }
}

答案 1 :(得分:0)

您需要将listField设置为列表中的字段名称,以便它可以显示在列表中。在列表类型的声明中:labelField =&#34; txtState&#34;你将从这个领域获得信息。