跨视图的flex移动sqlite数据库连接

时间:2011-10-22 11:01:46

标签: sqlite flex-mobile

我对灵活移动环境相对较新。 我在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();
    }

以上工作完美,表格已创建。

在注册屏幕中,我是否必须再次初始化db变量,如欢迎屏幕中的 s:creationComplete

如果我不重复并尝试访问conn(SQLConnection的变量),这是我得到的错误

  

TypeError:错误#1009:无法访问null的属性或方法   对象参考。

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

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

如果错误或请提出更好的方法,请纠正我。 非常感谢你

1 个答案:

答案 0 :(得分:0)

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

我不确定您对编程的熟悉程度,但从上面发布的内容中,您将能够弄清楚正在发生的事情并选择一些最佳实践(如果您还不知道)他们=))。