2011-10-22 27 views
1

我对柔性移动环境比较陌生。 我在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在欢迎屏幕中。

这是,如果我不重复,并尝试访问康恩(为的SQLConnection变量)

TypeError: Error #1009: Cannot access a property or method of a null object reference.

但在未来我将有大约30个这样的画面我得到的错误,所以我应该有重复所有屏幕的代码在他们的s:creationComplete?

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

请纠正我,如果我错了或建议更好的方法,如果有的话。 非常感谢您

+0

类似的问题已经在此解决: http://stackoverflow.com/questions/6831481/global-access-for-sqldb-on-mobile-device – SQLiteNoob

回答

0

我只是发布到今日的回应,它可以帮助你
How to get a view to read data

我不知道你是多么熟悉一般的编程,但是从你上面贴的东西,你将能够弄清楚发生了什么,并选择一些最佳实践(如果你还不知道它们=))。