【AIR】Flash IDEでSQLite その4

| | トラックバック(0)
前回の続きで、今回はデータが挿入されたテーブルから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

このブログ記事について

このページは、が2009年10月 7日 15:29に書いたブログ記事です。

ひとつ前のブログ記事は「【AIR】Flash IDEでSQLite その3」です。

次のブログ記事は「【AS3】マウスでフリップさせるクラス」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。