package {
import flash.data.*;
import flash.display.*;
import flash.events.*;
import flash.filesystem.*;
import flash.text.*;
//SQLiteデータベースの利用
public class SQLiteEx extends Sprite {
private var tfLog:TextField; //ログ
private var tfLabel:TextField; //ラベル
private var tfName:TextField; //名前
private var tfBirth:TextField; //誕生日
private var tfBlood:TextField; //血液型
private var btnCreate:CustomButton;//CREATEボタン
private var btnSelect:CustomButton;//SELECTボタン
private var btnInsert:CustomButton;//INSERTボタン
private var c:SQLConnection; //接続
private var stmt:SQLStatement; //ステートメント
//コンストラクタ
public function SQLiteEx() {
//ログの生成
tfLog=makeTextField("SQLiteEx\n\n",
5,5,630,420,TextFieldType.DYNAMIC,0xFFFFFF);
addChild(tfLog);
//ラベルの生成
tfLabel=makeTextField("名前",
5+160*0,430,60,20,TextFieldType.DYNAMIC,0xBBBBBB);
addChild(tfLabel);
tfLabel=makeTextField("誕生日",
5+160*1,430,60,20,TextFieldType.DYNAMIC,0xBBBBBB);
addChild(tfLabel);
tfLabel=makeTextField("血液型",
5+160*2,430,60,20,TextFieldType.DYNAMIC,0xBBBBBB);
addChild(tfLabel);
//テキストフィールドの生成
tfName=makeTextField("こなた",
65+160*0,430,100,20,TextFieldType.INPUT,0xFFFFFF);
addChild(tfName);
tfBirth=makeTextField("5月28日",
65+160*1,430,100,20,TextFieldType.INPUT,0xFFFFFF);
addChild(tfBirth);
tfBlood=makeTextField("A",
65+160*2,430,100,20,TextFieldType.INPUT,0xFFFFFF);
addChild(tfBlood);
//CREATEボタンの生成
btnCreate=new CustomButton("CREATE");
btnCreate.x=5;
btnCreate.y=455;
btnCreate.addEventListener(MouseEvent.CLICK,onCreateClick);
addChild(btnCreate);
//INSERTボタンの生成
btnInsert=new CustomButton("INSERT");
btnInsert.x=btnCreate.x+btnCreate.width+5;
btnInsert.y=455;
btnInsert.addEventListener(MouseEvent.CLICK,onInsertClick);
addChild(btnInsert);
//SELECTボタンの生成
btnSelect=new CustomButton("SELECT");
btnSelect.x=btnInsert.x+btnInsert.width+5;
btnSelect.y=455;
btnSelect.addEventListener(MouseEvent.CLICK,onSelectClick);
addChild(btnSelect);
//SQLコネクションによる接続
var file:File=File.applicationStorageDirectory.resolvePath(
"sample.db");
tfLog.appendText(file.nativePath+"\n");
c=new SQLConnection();
c.addEventListener(SQLEvent.OPEN,onOpenResult);
c.addEventListener(SQLErrorEvent.ERROR,onError);
c.open(file);
}
//テキストフィールドの追加
private function makeTextField(text:String,
x:int,y:int,w:int,h:int,type:String,color:uint):TextField {
var textField:TextField=new TextField();
textField.text =text;
textField.x =x;
textField.y =y;
textField.width =w;
textField.height =h;
textField.selectable =true;
textField.background =true;
textField.backgroundColor=color;
textField.type =type;
textField.multiline =true;
return textField;
}
//ボタンの生成
private function makeButton(text:String,x:int,y:int):TextField {
var button:TextField=new TextField();
button.text =text;
button.x =x;
button.y =y;
button.width =80;
button.height =20;
button.selectable =false;
button.border =true;
button.background =true;
button.backgroundColor=0xdddddd;
return button;
}
//SQLコネクション接続イベントの処理
private function onOpenResult(evt:SQLEvent):void {
tfLog.appendText("データベース接続完了\n");
}
//CREATEボタンクリックイベントの処理
private function onCreateClick(evt:Event):void {
try {
stmt=new SQLStatement();
stmt.sqlConnection=c;
stmt.text=
"CREATE TABLE IF NOT EXISTS people ("+
" name TEXT PRIMARY KEY,"+
" birth TEXT,"+
" blood TEXT"+
")";
stmt.addEventListener(SQLEvent.RESULT,onCreateResult);
stmt.addEventListener(SQLErrorEvent.ERROR,onError);
tfLog.appendText(stmt.text+"\n");
stmt.execute();
} catch (e:Error) {
tfLog.appendText(e.message+"\n");
}
}
//CREATE結果イベントの処理
private function onCreateResult(evt:SQLEvent):void {
tfLog.appendText("CREATE成功\n");
}
//INSERTボタンクリックイベントの処理
private function onInsertClick(evt:Event):void {
try {
stmt=new SQLStatement();
stmt.sqlConnection=c;
stmt.text=
"INSERT INTO people (name, birth, blood)"+
" VALUES ('"+tfName.text+"' , "+
" '"+tfBirth.text+"',"+
" '"+tfBlood.text+"')";
stmt.addEventListener(SQLEvent.RESULT,onInsertResult);
stmt.addEventListener(SQLErrorEvent.ERROR,onError);
tfLog.appendText(stmt.text+"\n");
stmt.execute();
} catch (e:Error) {
tfLog.appendText(e.message+"\n");
}
}
//INSERT結果イベントの処理
private function onInsertResult(evt:SQLEvent):void {
tfLog.appendText("INSERT成功\n");
}
//SELECTイベントの処理
private function onSelectClick(evt:Event):void {
try {
stmt=new SQLStatement();
stmt.sqlConnection=c;
stmt.text=
"SELECT name, birth, blood FROM people";
stmt.addEventListener(SQLEvent.RESULT,onSelectResult);
stmt.addEventListener(SQLErrorEvent.ERROR,onError);
trace(stmt.text);
stmt.execute();
} catch (e:Error) {
trace(e.toString());
}
}
//SELECT結果イベントの処理
private function onSelectResult(evt:SQLEvent):void {
tfLog.appendText("SELECT成功\n");
var text:String="";
var result:SQLResult=stmt.getResult();
var num:int=result.data.length;
text+="----------\n";
for (var i:int=0;i<num;i++) {
text+=result.data[i]["name"]+"/"+
result.data[i]["birth"]+"/"+
result.data[i]["blood"]+"\n";
}
text+="----------\n";
tfLog.appendText(text);
}
//エラーイベントの処理
private function onError(evt:SQLErrorEvent):void {
tfLog.appendText(evt.error.message+"\n");
}
}
}
|