【AIR】Flash IDEでSQLite その4
前回の続きで、今回はデータが挿入されたテーブルからSQL文の SELECTをつかってテーブルを参照します。
一応今回もflaファイルを用意しました。
※flaファイルはCS3で書き出しています。
SQLResultクラスを今回から追加しました。
import flash.data.SQLResult;
データを取得するには、下記のようにSQLStatementクラスのgetResult()メソッドを利用してSQLResultを取得します。
SQLResultをObjectに代入し、dataプロパティを参照する事でデータを抜き取ることが可能になります。
var result:SQLResult = sqlStmt.getResult(); var row:Object = result.data[i];ソース全文
package
{
import flash.data.SQLResult;
import flash.display.MovieClip;
import flash.text.TextField;
import flash.events.MouseEvent;
import flash.data.SQLConnection;
import flash.data.SQLMode;
import flash.events.SQLEvent;
import flash.events.SQLErrorEvent;
import flash.data.SQLStatement;
import flash.filesystem.File;
public class Main extends MovieClip
{
private var con:SQLConnection;
private var file:File;
private var sqlStmt:SQLStatement;
public function Main()
{
con = new SQLConnection();
con.addEventListener(SQLEvent.OPEN, openHandeler);
con.addEventListener(SQLErrorEvent.ERROR, errorHandler);
//とりあえずデスクトップに「dbFile.db」が作成されるよおうにしてあります。
file = File.desktopDirectory.resolvePath("dbFile.db");
if (file.exists) {
trace("ファイルは存在します。" + file.nativePath);
}else {
trace("ファイルは存在しません。" + file.nativePath);
}
//ファイルを作成
con.openAsync(file, SQLMode.CREATE);
set_mc.visible = false;
}
private function openHandeler(e:SQLEvent):void {
trace("データベースのオープンが成功しました。");
t.text = "データベースのオープンが成功しました。";
createTable();
}
private function errorHandler(e:SQLErrorEvent):void {
trace("データベースの接続でエラーが発生しました。"+e.error.message);
trace(e.error.details);
trace("--------------------------------------------------")
t.text = e.error.message;
}
private function createTable():void {
sqlStmt = new SQLStatement();
sqlStmt.sqlConnection = con;
var str:String = "CREATE TABLE IF NOT EXISTS player ("+
" no INTEGER PRIMARY KEY,"+
" id TEXT,"+
" mail TEXT"+
")";
sqlStmt.text = str;
sqlStmt.addEventListener(SQLEvent.RESULT, createSucces);
sqlStmt.addEventListener(SQLErrorEvent.ERROR, createError);
sqlStmt.execute();
}
private function createSucces(e:SQLEvent):void {
trace("テーブルが作成されました。")
t.text = "テーブルが作成されました。";
set_mc.visible = true;
set_mc.buttonMode = true;
set_mc.addEventListener(MouseEvent.CLICK, insertBtnClickHandler);
}
private function createError(e:SQLErrorEvent):void {
trace("テーブル作成時にエラーが発生しました。"+e.error.message);
trace(e.error.details);
trace("--------------------------------------------------")
t.text = e.error.message;
}
//INSERT文を使いテーブルにデータを挿入
private function insertBtnClickHandler(e:MouseEvent):void {
sqlStmt = new SQLStatement();
sqlStmt.sqlConnection = con;
sqlStmt.text=
"INSERT INTO player (no, id, mail)"+
" VALUES (Null," +
"'"+ idTextInput.text +"',"+
"'"+ mailTextInput.text +"')";
sqlStmt.addEventListener(SQLEvent.RESULT, stmtInsertResult);
sqlStmt.addEventListener(SQLErrorEvent.ERROR,connectionErrorHandler);
sqlStmt.execute();
}
private function stmtInsertResult(e:SQLEvent):void {
trace("INSERTしました");
t.text = "INSERTしました";
getData()
}
private function connectionErrorHandler(e:SQLErrorEvent):void {
trace("INSERT時にエラーが発生しました。"+e.error.message);
trace(e.error.details);
trace("--------------------------------------------------")
t.text = e.error.message;
}
private function getData():void {
sqlStmt = new SQLStatement();
sqlStmt.sqlConnection = con;
sqlStmt.text = "SELECT no,id,mail FROM player";
sqlStmt.addEventListener(SQLEvent.RESULT, getDataResult);
sqlStmt.addEventListener(SQLErrorEvent.ERROR, stmtErrorHandler);
sqlStmt.execute();
}
private function getDataResult(e:SQLEvent):void {
var result:SQLResult = sqlStmt.getResult();
var num:int = result.data.length;
var id:String;
var mail:String;
var str:String;
for (var i:int = 0; i < num; i++) {
var row:Object = result.data[i];
trace("ID"+row.id)
trace("Mail" + row.mail )
trace("------------------------------"+"\n")
str += "--ID--" + row.id+"\n"
str += "--Mail--"+row.mail+"\n"
}
t.text = str;
}
private function stmtErrorHandler(e:SQLErrorEvent):void {
trace("テーブルの参照時にエラーが発生しました。"+e.error.message);
trace(e.error.details);
trace("--------------------------------------------------")
t.text = e.error.message;
}
}
}
トラックバック(0)
このブログ記事を参照しているブログ一覧: 【AIR】Flash IDEでSQLite その4
このブログ記事に対するトラックバックURL: http://alwaysfinetuning.com/mt/mt-tb.cgi/79

