»ç¿ëÇϱ⿡´Â ±×·¸Áö¸¶´Â SQLite¸¦ ÀÌÇØÇϱ⿡ ÁÁÀº ¿¹Á¦À̱⿡
ÀÎÅͳݿ¡ ÀÖ´Â °ÍÀ» Á¶±Ý °íÃļ ¿Ã·È½À´Ï´Ù.
À̰ÍÀ» ½ÇÇàÇϸé, ¹ÙÅÁȸ鿡 µ¥ÀÌÅͺ£À̽º ÆÄÀÏ Employee.dbÀÌ »ý¼ºµÇ°í,
º¸±â, »ðÀÔ, ¼öÁ¤, »èÁ¦°¡ µÇ´Â ÄÚµùÀÔ´Ï´Ù.
»ðÀÔÀº ÇѰ¡Áö¸¸ µÇ°Ô µÇ¾î ÀÖ°í,
¼öÁ¤Àº ±× ÀÚ¸®¿¡¼ ¼öÁ¤ÇÏ°í ¼öÁ¤ º¸ÅÏÀ» ´©¸£¸é µË´Ï´Ù.
Â÷ºÐÈ÷ ÀÌÇØ¸¸ Çϸé, ¸¹Àº µµ¿òÀÌ µÉ °ÍÀÔ´Ï´Ù.
³¡À¸·Î ¹èÆ÷ÆÄÀÏÀ» ¸¸µé¾î ½ÇÇàÇÏ¿© º¸½Ê½Ã¿À.
¹èÆ÷ÆÄÀÏ SQLiteExample.air¸¦ ÷ºÎÆÄÀÏ·Î ¿Ã·È½À´Ï´Ù.
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
applicationComplete="init()" layout="absolute">
<mx:Script>
<![CDATA[
import mx.controls.List;
import mx.controls.TextInput;
import mx.events.DataGridEvent;
import mx.collections.ArrayCollection;
import mx.utils.ArrayUtil;
import mx.controls.Alert;
import flash.data.SQLConnection;
import flash.data.SQLResult;
import flash.data.SQLStatement;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;
import mx.events.ListEvent;
import flash.filesystem.File;
[Bindable]
private var resultData:Array;
private var conn:SQLConnection = new SQLConnection();
private var selectStmt:SQLStatement = new SQLStatement();
// ¹ÙÅÁȸ鿡 µ¥ÀÌÅͺ£À̽º ÀÖ´ÂÁö È®ÀÎÇϰí, ¾øÀÌ¸é »õ Å×ÀÌºí ¸¸µé±â
private function connectDB():void{
var dbFile:File = File.desktopDirectory.resolvePath("Employee.db");
if(dbFile.exists) {
conn.addEventListener(SQLEvent.OPEN, openHandler);
conn.open(dbFile);
}
else {
conn.addEventListener(SQLEvent.OPEN, newDatabaseHandler);
conn.open(dbFile);
}
}
private function openHandler(event:SQLEvent):void{
selectData();
situation.text = "µ¥ÀÌÅͺ£À̽º°¡ ÀÌ¹Ì ¿·¯ ÀÖ½À´Ï´Ù";
}
// µ¥ÀÌÅÍ °¡Á®¿À±â
private function selectData():void{
selectStmt.sqlConnection = conn;
var sql:String = "SELECT * FROM employees";
selectStmt.text = sql;
selectStmt.addEventListener(SQLEvent.RESULT, selectHandler);
selectStmt.addEventListener(SQLErrorEvent.ERROR, errorHandler);
selectStmt.execute();
}
private function selectHandler(event:SQLEvent):void{
resultData = selectStmt.getResult().data;
}
// »õ Å×ÀÌºí »ý¼ºÇϱâ
private function newDatabaseHandler(event:SQLEvent):void{
createTable();
situation.text = "Table created";
}
private function createTable():void{
var createStmt:SQLStatement = new SQLStatement();
createStmt.sqlConnection = conn;
var sql:String =
"CREATE TABLE IF NOT EXISTS employees (" +
"empId INTEGER PRIMARY KEY AUTOINCREMENT, " +
"firstName TEXT, " +
"lastName TEXT, " +
"salary NUMERIC CHECK (salary > 0)" +
")";
createStmt.text = sql;
createStmt.addEventListener(SQLEvent.RESULT, createTableResult);
createStmt.addEventListener(SQLErrorEvent.ERROR, errorHandler);
createStmt.execute();
}
private function createTableResult(event:SQLEvent):void{
situation.text = "Employees Å×À̺íÀÌ »ý¼º µÇ¾ú½À´Ï´Ù ";
}
//µ¥ÀÌÅÍ »ðÀÔ
private function insertData():void{
var insertStmt:SQLStatement = new SQLStatement();
insertStmt.sqlConnection = conn;
var sql:String = "INSERT INTO employees " +
"(firstName, lastName, salary) VALUES ('Eric', 'Moon', 80000)";
insertStmt.text = sql;
insertStmt.addEventListener(SQLEvent.RESULT, insertHandler);
insertStmt.addEventListener(SQLErrorEvent.ERROR, errorHandler);
insertStmt.execute();
}
private function insertHandler(event:SQLEvent):void{
situation.text = "»ðÀÔ µÇ¾ú½À´Ï´Ù";
selectData();
}
// µ¥ÀÌÅÍ »èÁ¦
private function deleteData():void{
if (resultAC.length >0)
var empid:int = dg.selectedItem.empId;
var deleteStmt:SQLStatement = new SQLStatement();
deleteStmt.sqlConnection = conn;
var sql:String = "DELETE FROM employees WHERE empID="+empid;
deleteStmt.text = sql;
deleteStmt.addEventListener(SQLEvent.RESULT, deleteHandler);
deleteStmt.addEventListener(SQLErrorEvent.ERROR, errorHandler);
deleteStmt.execute();
resultAC.removeItemAt(empid);
}
private function deleteHandler(event:SQLEvent):void{
situation.text = "»èÁ¦ µÇ¾ú½À´Ï´Ù";
selectData();
}
// ¿¡·¯ ó¸®
private function errorHandler(event:SQLErrorEvent):void{
var errMessage:String;
//errMessage = event.error.message ;
situation.text += errMessage;
}
private function init():void{
stage.displayState = StageDisplayState.NORMAL;
connectDB();
}
// µ¥ÀÌÅÍ ¾÷µ¥ÀÌÆ®
private function updateData():void{
var updateStmt:SQLStatement = new SQLStatement();
updateStmt.sqlConnection = conn;
var sql:String = "UPDATE employees " +
"SET firstName = '" + dg.selectedItem.firstName + "', " +
"lastName = '" + dg.selectedItem.lastName + "', " +
"salary = '" + dg.selectedItem.salary + "' " +
"WHERE empID="+ dg.selectedItem.empId;
updateStmt.text = sql;
updateStmt.addEventListener(SQLEvent.RESULT, updateHandler);
updateStmt.addEventListener(SQLErrorEvent.ERROR, errorHandler);
updateStmt.execute();
}
private function updateHandler(event:SQLEvent):void{
situation.text = "¼öÁ¤ µÇ¾ú½À´Ï´Ù";
selectData();
}
]]>
</mx:Script>
<mx:ArrayCollection id="resultAC" source ="{ArrayUtil.toArray(resultData)}" />
<mx:Panel x="10" y="10" width="517" height="428" layout="absolute"
title="SQLite ¿¹Á¦" fontSize="11">
<mx:DataGrid x="10" y="10" editable="true" id="dg"
dataProvider="{resultAC}">
<mx:columns>
<mx:DataGridColumn headerText="¹øÈ£" dataField="empId"/>
<mx:DataGridColumn headerText="¼º" dataField="lastName"/>
<mx:DataGridColumn headerText="À̸§" dataField="firstName"/>
<mx:DataGridColumn headerText="ºÀ±Þ" dataField="salary"/>
</mx:columns>
</mx:DataGrid>
<mx:Button x="10" y="210" label="Å×À̺í»ý¼º" click="createTable()"/>
<mx:Button x="104" y="210" label="º¸±â" click="selectData()"/>
<mx:Button x="162" y="210" label="»ðÀÔ" click="insertData()"/>
<mx:Button x="220" y="210" label="¼öÁ¤" click="updateData()"/>
<mx:Button x="278" y="210" label="»èÁ¦" click="deleteData()"/>
<mx:TextArea x="10" y="248" width="414" fontSize="14" color="#F80421"
text="Çö»óȲ" height="25" id="situation"/>
</mx:Panel>
</mx:WindowedApplication>