1

我对 flex 移动环境比较陌生。我在 flex mobile 中使用 sqlite。

我有一个基本的应用程序,它有一个欢迎屏幕和注册。

在欢迎屏幕中,如果本地数据库(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:无法访问空对象引用的属性或方法。

但是将来我将拥有大约 30 个这样的屏幕,所以我是否必须在他们的 s:creationComplete 中重复所有屏幕的代码?

最后,我想轻松地在其他屏幕中打开数据库连接并执行我的 sqlite 操作。

如果我错了,请纠正我或提出更好的方法(如果有)。非常感谢

4

1 回答 1

0

我今天刚刚发布了对此的回复,它可能会对您有所帮助
How to get a view to read data

我不确定您对编程的总体了解程度,但是从您上面发布的内容中,您将能够弄清楚发生了什么并获得一些最佳实践(如果您还不知道它们=) )。

于 2012-05-06T08:10:40.163 回答