【问题标题】:flex mobile sqlite database connection across views跨视图的 flex 移动 sqlite 数据库连接
【发布时间】: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操作。

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

【问题讨论】:

标签: sqlite flex-mobile


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多