使用Flash Builder 4.6,我下面
http://www.flex-blog.com/adobe-air-sqlite-example
(编辑:链接似乎被打破)作为一个例子,有代码的一部分不工作:Adobe Air:为什么SQLStatement的getResult()。data为null?
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的可能原因()数据成为空?
我现在可以看到,从教程,之所以说的getResult()。数据为空是因为在db_opened功能,我们执行SQLite的查询,如果它不存在,这将创建一个表。有从查询返回什么,因此我们得到从那里空。因此,我会根据你的建议去做。谢谢。 – Karl