【发布时间】:2012-05-06 16:10:40
【问题描述】:
我对 flex 移动环境比较陌生。 我在 flex mobile 中使用 sqlite。
我有一个带有欢迎屏幕和注册的基本应用程序。
在欢迎屏幕中,如果本地 db (sqlite) 中不存在表,则会创建表
在欢迎屏幕中
<s:creationComplete>
dbFile = File.applicationStorageDirectory.resolvePath("testDB.db");
conn = new SQLConnection();
conn.addEventListener(SQLErrorEvent.ERROR, errorHandler);
conn.addEventListener(SQLEvent.OPEN, openHandler);
conn.openAsync(dbFile);
</s:creationComplete>
in scripts
public var conn:SQLConnection;
private var insertUser:SQLStatement;
private var createUsersTable:SQLStatement = new SQLStatement();
private var getUser:SQLStatement = new SQLStatement();
public var dbFile:File;
private function openHandler(event:SQLEvent):void {
conn.removeEventListener(SQLEvent.OPEN, openHandler);
conn.addEventListener(SQLEvent.BEGIN, beginHandler);
conn.begin();
}
private function beginHandler(event:SQLEvent):void {
conn.removeEventListener(SQLEvent.BEGIN, beginHandler);
createUsersTable.sqlConnection = conn;
createUsersTable.text ="CREATE TABLE IF NOT EXISTS users(first_name varchar(100),email VARCHAR(100))";
createUsersTable.execute();
}
以上工作完美,表格已创建。
在注册屏幕中,我是否必须像在欢迎屏幕中的 s:creationComplete 中一样再次初始化 db 变量。
如果我不重复并尝试访问 conn(SQLConnection 的变量),这是我得到的错误
TypeError:错误 #1009:无法访问 null 的属性或方法 对象引用。
但是将来我将拥有大约 30 个这样的屏幕,所以我是否必须在他们的 s:creationComplete 中为所有屏幕重复代码?
最后我想在其他屏幕轻松打开数据库连接并进行我的sqlite操作。
如果我错了,请纠正我或提出更好的方法(如果有)。 非常感谢
【问题讨论】:
-
类似问题已在此处解决:stackoverflow.com/questions/6831481/…
标签: sqlite flex-mobile