未分類

AIRでのSQLite

[`evernote` not found]
LINEで送る
Pocket

apolloからAIRになり、SQLiteが使えるようになったみたい。

なので早速使ってみた。

基本的に、
接続: flash.data.SQLConnectionクラス
クエリ: flash.data.SQLStatementクラス

で行うみたいだが、SQLiteのファイルを指定するときに、
flash.filesystem.Fileクラスが必要。

さらに、各種イベント系。
flash.events.SQLEvent?

とたくさんあるが、僕はこうしました。

import flash.filesystem.File;
import flash.data.*;
import flash.filesystem.*;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;
import flash.events.SQLUpdateEvent;

多い!

大まかに流れを書くと、こんな感じです。

SQLConnectionのオブジェクトを生成。
SQLStatementのオブジェクトを生成。

SQLConnection.open( new File(“DBファイルのURL”)で接続開始。

接続後の処理は
SQLStatement.sqlConnection = SQLConnection
として接続情報を実際に処理を担当するSQLStatementへ渡す。

接続完了のイベント発行後、
SQLConnection.addEventListener(“open”, openHandler); //openHandler=接続後に行いたい処理

実際の処理を行う。
openHandler(e:Event):voidないで
SQLStatement.text = “実際に実行するクエリ”;
SQLStatement.execute(); //ここで実行。

selectなどを利用してて、結果が欲しい時は、クエリ実行後に、結果が
SQLStatement.addEventListener(“result”, resultHandler);
で取得できるので、
resultHandler内で、
SQLStatement.getResult()により結果を取得する。

といった流れです。

実際のスクリプトとしては、こんな感じで記述しました。
//DBの接続担当のオブジェクト作成
private var sqlConn:SQLConnection = new SQLConnection();
//SQLのクエリなど実際の処理担当のオブジェクト作成
private var sqlStatement:SQLStatement = new SQLStatement();

private var pathPrefix:String = “/air”;
//SQLiteはファイルベースのDBなので、その場所を指定。※URL形式!!
private var dbFile:File = new File(pathPrefix + “/data.db”);

if(sqlConn.connected == false){
sqlConn.open( dbFile , true,false,-1);
}

//DB接続がOKの場合に発生するイベント
sqlConn.addEventListener(“open”, sqlOpenHandler);
//エラーの時に発生するイベント
sqlConn.addEventListener(“error”, sqlErrorHandler);

//DBとの接続をSQLStatement(処理担当)へ渡す。
sqlStatement.sqlConnection = sqlConn;

//接続が無事完了してからの処理
private function sqlOpenHandler(e:SQLEvent):void{

var query:String = “”; //select , insert , create table , deleteなどのクエリ

//クエリをSQLStatementオブジェクトへ入れる。
sqlStatement.text = query;

//クエリの実行。
sqlStatement.execute();

//実行結果を取得したい場合は、イベント”result”を取得する。
sqlStatement.addEventListener(“result” , resultHandler);
}

//クエリ実行結果の取得
private function resultHandler(e:Event):void{
sqlStatement.getResult();

}

これで結果を取得できます。

備考:
これは僕がおためし程度に書いたスクリプトですので、間違いなどあればご指摘いただければと思います。

後、具体的なコードも細かい部分で省略してるところはあります。

2007年7月4日01:36

コメントを残す

メールアドレスが公開されることはありません。