データベースを利用したスケジュール帳
データベースは以前利用したことがあるんですが忘れていたので復習
簡単なスケジュール帳でスケジュールの追加と削除が出来ます。
解説
データベースへの接続と生成
//データベースファイルの指定 var d_file:File = File.applicationStorageDirectory.resolvePath("data.db"); //データベースとの接続 conn = new SQLConnection(); conn.addEventListener(SQLEvent.OPEN, onDBOpen); conn.addEventListener(SQLErrorEvent.ERROR, onDBError); conn.openAsync(d_file);
2つのaddEventListenerはデータベースが開かれたときとエラー発生時のイベントです。
ここで指定したdata.dbが存在しない場合は生成されます。
SQL文の実行
private function execSQL(sql:String, closure:Function):void{ if(!conn.connected) return; //データベースと接続されていなかったら //SQL文を実行するためにSQLStatementのオブジェクトを作る stmt = new SQLStatement(); stmt.sqlConnection = conn; stmt.addEventListener(SQLEvent.RESULT, closure); stmt.addEventListener(SQLErrorEvent.ERROR, onDBError); stmt.text = sql; stmt.execute(); }
このメソッドでSQL文を実行します。
stmt.textに入っているSQL文をstmt.execute()で実行って感じ。
あと、このメソッドの第二引数はSQLの実行後に呼び出したいメソッドを指定してあげます。
最後にSELECTで取ってきたデータの処理
//データベースからの結果の取得イベント private function select_onResult(event:SQLEvent):void{ var result:SQLResult = stmt.getResult(); ary = new ArrayCollection(result.data); status = "データグリッド更新完了"; }
SELECT実行後に取れてきたデータはstmt.getResult()で取得できます。
ここでは、それをまとめて配列に入れてしまっています。
取れてきたデータ一つ一つにを処理したい場合は
for each(var obj:Object in result.data){ trace(obj.id); trace(obj.location); trace(obj.comment); }
こんな感じに書けばできます。
この場合は取れてきたデータのそれぞれのid, location, commentを表示しています。
データベースもSQLさえ分かれば簡単ですね。