データベースを利用したスケジュール帳

データベースは以前利用したことがあるんですが忘れていたので復習



ダウンロード

ソース


簡単なスケジュール帳でスケジュールの追加と削除が出来ます。



解説


データベースへの接続と生成

//データベースファイルの指定
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さえ分かれば簡単ですね。