Flash CS5.5/Adobe AIRでSQliteを使用します。
今回はスマートフォン向けに開発しているので、Android・iPhone環境を意識します。
iPhoneでは保存場所のルールができたようで、kamijo氏のエントリーを参考にしました。
iOS データ保管ガイドラインの変更と Adobe AIR への影響
0,準備
- 書き出し設定がAIRになってるか確認
- DBの保存場所を作成。
apkが書き出されるフォルダの一つ上に"Library/Caches"フォルダを作成 - メンバ変数
public var dbConnect:SQLConnection;
1,データベースを開く(初回は作成する)
var str:String = File.applicationDirectory.nativePath;
var cacheDir:File = new File(str + "/\.\./Library/Caches");
//var tempDir:File = new File(str + "/\.\./tmp");
var dbFile:File = new File(cacheDir.url + "/dbName.db");
dbConnect = new SQLConnection();
dbConnect.addEventListener(SQLEvent.OPEN, comp);
dbConnect.open(dbFile);
function comp(e:SQLEvent):void {
var statement:SQLStatement = new SQLStatement();
dbConnect.removeEventListener(SQLEvent.OPEN, comp);
statement.sqlConnection = dbConnect;
statement.text=
"CREATE TABLE IF NOT EXISTS tableName (" +
" no INTEGER PRIMARY KEY,"+
" name TEXT"+
")";
statement.addEventListener(SQLEvent.RESULT, function(e:SQLEvent):void {trace(SQLEvent.RESULT)});
statement.addEventListener(SQLErrorEvent.ERROR, function(e:SQLErrorEvent):void{trace(SQLErrorEvent.ERROR)});
statement.execute();
}
2,レコードを挿入
public function addRecord(name:String):void {
var statement:SQLStatement = new SQLStatement();
statement.sqlConnection = dbConnect;
statement.text=
"INSERT INTO tableName (no, name)" +
" VALUES (Null," +
"'"+ name +"')"
statement.addEventListener(SQLEvent.RESULT, function(e:SQLEvent):void{trace(SQLEvent.RESULT)});
statement.addEventListener(SQLErrorEvent.ERROR, function(e:SQLErrorEvent):void{trace(SQLErrorEvent.ERROR)});
statement.execute();
}
3,レコードを取得
public function getRecord(index:uint,length:uint ):void {
var statement:SQLStatement = new SQLStatement();
statement.sqlConnection = dbConnect;
statement.text = "SELECT * FROM tableName LIMIT "+index+" , "+length+" ;";
statement.addEventListener(SQLEvent.RESULT, function(e:SQLEvent):void {
trace(SQLEvent.RESULT)
var result:Array = statement.getResult().data;
for (var i in result) {
trace(i+"="+result[i]);
}
});
statement.addEventListener(SQLErrorEvent.ERROR, function(e:SQLErrorEvent):void{trace(SQLErrorEvent.ERROR)});
statement.execute();
}
0 件のコメント:
コメントを投稿