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 件のコメント:
コメントを投稿