Я относительно новичок в гибкой мобильной среде.
Я использую sqlite во flex mobile.
У меня есть базовое приложение с экраном приветствия и регистрацией.
На экране приветствия таблицы создаются, если их нет в локальной базе данных (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: невозможно получить доступ к свойству или методу с нулевым значением
ссылка на объект.
Но в будущем у меня будет около 30 таких экранов, поэтому я должен буду повторить код для всех экранов в их s: creationComplete?
Наконец, я хотел бы легко открыть соединение db на других экранах и выполнить свои операции sqlite.
Пожалуйста, поправьте меня, если я ошибаюсь, или предложите лучшие способы, если таковые имеются.
Большое спасибо