Возврат ArrayCollection из запроса SELECT - PullRequest
0 голосов
/ 23 октября 2011

В моем приложении 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;
 }

Что я должен сделать, чтобы получить результаты для ArrayCollection, вызвав функцию visitorName ()?Можно ли получить возвращаемое значение из вложенной функции? Я знаю, что функция visitorName должна быть изменена на тип ArrayCollection и должна объявлять переменную ArrayCollection внутри нее .. но не уверен, как поступить ... любая помощь приветствуется ..

1 Ответ

0 голосов
/ 23 октября 2011

Прежде всего, обратите внимание, что visitornamesResult является обработчиком событий, поэтому вы не сможете получить возвращаемое значение этой функции.

Вы захотите поместить результат куда-нибудь, когда получите его (в пользовательском интерфейсе? Или в модели?)

Давайте сделаем это просто, и просто назначим его для 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;
}
...