私はフレックスモバイル環境に比較的慣れていません。私はフレックスモバイルで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: null オブジェクト参照のプロパティまたはメソッドにアクセスできません。
しかし、将来的にはこのような画面が約 30 あるので、すべての画面のコードを s:creationComplete で繰り返す必要がありますか?
最後に、他の画面で db 接続を簡単に開き、sqlite 操作を実行したいと思います。
間違っている場合は修正するか、より良い方法があれば提案してください。どうもありがとうございました