使用 Flash Builder 4.6,我以http://www.flex-blog.com/adobe-air-sqlite-example (编辑:链接似乎已损坏)为例,并且有一部分代码没有工作:
private function resault(e:SQLEvent):void
{
// with sqls.getResault().data we get the array of objects for each row out of our database
var data:Array = sqls.getResult().data;
// we pass the array of objects to our data provider to fill the datagrid
dp = new ArrayCollection(data);
}
在运行时检查程序让我知道 sqls.getResult() 返回一个有效的 SQLResult 对象,但它的数据为空。
从我之前的问题Adobe Air: convert sqlite's result [object Object] to String? ,看来我问错了问题。
不过,我已经检查了我的 SQLResult 对象
trace(ObjectUtil.toString(sqls.getResult()));
我可以看到我从 sqlite 获得了所有内容:
(flash.data::SQLResult)#0
complete = true
data = (Array)#1
[0] (Object)#2
first_name = "AAA"
id = 1
last_name = "BBB"
[1] (Object)#3
first_name = "AAA"
id = 2
last_name = "BBB"
[2] (Object)#4
first_name = "qqq"
id = 3
last_name = "qqq"
lastInsertRowID = 0
rowsAffected = 0
那么这里发生了什么?我真的必须创建自己的函数来解析我所有的 sqlite 元素,然后自己将它们放在数据提供者中吗?是的,我可以这样做,但说真的,许多教程都显示使用:
var data:Array = sqls.getResult().data;
dp = new ArrayCollection(data);
现在,回到这个问题:sqls.getResult().data 变为空的可能原因是什么?