从SELECT查询返回ArrayCollection

时间:2011-10-23 10:38:00

标签: actionscript-3 flex air

在我的AIR应用程序中,我试图将sqlite数据库中的名称作为ArrayCollection。这是我的代码。

 private function visitorName():void {

 var sqlText:String = "SELECT name FROM user";
 visitorNames = new SQLStatement;
 visitorNames.sqlConnection = dbConn;
 visitorNames.addEventListener(SQLEvent.RESULT, visitornamesResult);
 visitorNames.addEventListener(SQLErrorEvent.ERROR, errorHandler);
 visitorNames.text = sqlText;
 visitorNames.execute();

}

 private function visitornamesResult(event:SQLEvent):Array {
  var result:SQLResult = visitorNames.getResult();
  var  namesList:Array = new Array();
  namesList = result.data;
  datafield3.dataProvider = namesList;
  return namesList;
 }

如何通过调用visitorName()函数将结果传递给ArrayCollection? 是否有可能从嵌套函数中获取返回值?我知道visitorName函数应该更改为ArrayCollection类型,并且应该在其中声明一个ArrayCollection变量..但不太确定如何继续..任何帮助表示赞赏..

1 个答案:

答案 0 :(得分:0)

首先,请注意visitornamesResult是一个事件处理程序,因此您将无法获得该函数的返回值。

当你得到它时(在UI中?或在模型中?),你会想要将结果实际放到某处吗?

让我们保持简单,只需将其分配给您的datafield3.dataProvider

private function visitorName(): { ... /* same as before */ }

private function visitornamesResult(event:SQLEvent):void {
    var result:SQLResult = visitorNames.getResult();

    // this is how you create an ArrayCollection with a provided Array
    var visitors: ArrayCollection = new ArrayCollection( result.data ); 

    datafield3.dataProvider = visitors;
}