ADOBE AIR SQLLITE NOTEZ

Werbung
____________________
ADOBE AIR SQLLITE NOTEZ
some more info
-------------------------INDEX
0. ABOUT / UM WAS GEHT ES?
1. working example
2.
3.
0. ABOUT / UM WAS GEHT ES?
store & read stuff from a local sqllite-database-file.
btw. Adobe AIR does NOT store the specified sqllite database inside the bin-debug, bin or src directory
of your project
… no no
it will be under: /Users/canoodle/Library/Preferences/SQLLITE-TEST2/Local Store/sampleDB.db
1. working example
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" preinitialize="openDatabaseConnection()" fontSize="12" backgroundColor="#FFFFFF" width="600" height="700"
creationComplete="initApp();">
<mx:Script>
<![CDATA[
import flash.data.SQLConnection;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;
import flash.filesystem.File;
import mx.controls.Alert;
private var conn:SQLConnection;
private var initComplete:Boolean = false;
private var sqlStatement:SQLStatement;
public function initApp():void
{
readTable();
}
public function openDatabaseConnection(event:Event = null):void
{
if(event == null)
{
// create new sqlConnection
conn = new SQLConnection();
conn.addEventListener(SQLEvent.OPEN, openDatabaseConnection);
conn.addEventListener(SQLErrorEvent.ERROR, openDatabaseConnection);
// get currently dir
var dbFile:File = File.applicationStorageDirectory.resolvePath("sampleDB.db");
// open database,If the file doesn't exist yet, it will be created
conn.openAsync(dbFile);
}
else if(event.type == SQLEvent.OPEN)
{
onDatabaseOpen();
}
else if(event.type == SQLErrorEvent.ERROR)
{
debug.text = event['error']['message']+" "+event['error']['details'];
trace(debug.text);
}
}
// connect and init database/table
private function onDatabaseOpen(event:Event = null):void
{
if(event == null)
{
// init sqlStatement object
sqlStatement = new SQLStatement();
sqlStatement.sqlConnection = conn;
var sql:String =
"CREATE TABLE IF NOT EXISTS user (" +
"
id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"
name TEXT, " +
"
password TEXT" +
")";
sqlStatement.text = sql;
sqlStatement.addEventListener(SQLEvent.RESULT, onDatabaseOpen); // -> HandleResult
sqlStatement.addEventListener(SQLErrorEvent.ERROR, onDatabaseOpen);
sqlStatement.execute();
}
else if(event.type == SQLEvent.RESULT)
{
HandleResult();
}
else if(event.type == SQLErrorEvent.ERROR)
{
debug.text = event['error']['message']+" "+event['error']['details'];
trace(debug.text);
}
}
// retrieve data from SQLlite Result and display it
private function HandleResult(event:SQLEvent = null):void
{
// refresh data
var sqlresult:SQLResult = sqlStatement.getResult();
datafiled.dataProvider = sqlresult.data;
}
// read table
private function readTable(event:Event = null):void
{
if(event == null)
{
var readQuery:String = "SELECT * FROM user"
sqlStatement = new SQLStatement();
sqlStatement.sqlConnection = conn;
sqlStatement.addEventListener(SQLEvent.RESULT, readTable);
sqlStatement.addEventListener(SQLErrorEvent.ERROR, readTable);
debug.text+=readQuery+"\n";
execute(readQuery);
}
else if(event.type == SQLEvent.RESULT)
{
HandleResult();
}
}
private function errorHandler(event:SQLErrorEvent):void
{
trace("Error code:", event.error['code']);
trace("Details:", event.error.message);
}
// execute query
private function execute(sql:String):void
{
if(sqlStatement.executing == false)
{
sqlStatement.text = sql;
sqlStatement.execute();
}
}
// insert
private function insert_user(event:Event = null):void
{
if(event == null)
{
var sqlupdate:String = "Insert into user(name,password) values('"+username.text+"','"+password.text+"')";
sqlStatement = new SQLStatement();
sqlStatement.sqlConnection = conn;
sqlStatement.addEventListener(SQLEvent.RESULT, insert_user);
sqlStatement.addEventListener(SQLErrorEvent.ERROR, insert_user);
debug.text+=sqlupdate+"\n";
execute(sqlupdate);
}
else if(event.type == SQLEvent.RESULT)
{
readTable();
}
}
// delete
private function delete_user(event:Event = null):void
{
if(event == null)
{
var sqldelete:String = "";
if(datafiled.selectedItem != null)
{
sqldelete = "delete from user where id='" +datafiled.selectedItem.id +"'";
sqlStatement = new SQLStatement();
sqlStatement.sqlConnection = conn;
sqlStatement.addEventListener(SQLEvent.RESULT, insert_user);
sqlStatement.addEventListener(SQLErrorEvent.ERROR, insert_user);
debug.text+=sqldelete+"\n"
execute(sqldelete);
}
else
{
Alert.show("please select a user from the list","and then press delete");
}
}
else if(event.type == SQLEvent.RESULT)
{
readTable();
}
}
// update user
private function update_user(event:Event = null):void
{
if(event == null)
{
var sqlUpdate:String = "";
if(datafiled.selectedItem != null)
{
sqlUpdate = "UPDATE user SET name='"+username.text+"',password='"+password.text+"' where id='" +datafiled.selectedItem.id +"'";
sqlStatement = new SQLStatement();
sqlStatement.sqlConnection = conn;
sqlStatement.addEventListener(SQLEvent.RESULT, insert_user);
sqlStatement.addEventListener(SQLErrorEvent.ERROR, insert_user);
debug.text+=sqlUpdate+"\n"
execute(sqlUpdate);
}
else
{
Alert.show("please select a user from the list","and then press update again.");
}
}
else if(event.type == SQLEvent.RESULT)
{
readTable();
}
}
]]>
</mx:Script>
<mx:TextArea x="21" y="10" width="402" height="179" id="debug"/>
<mx:DataGrid x="21" y="197" id="datafiled">
<mx:columns>
<mx:DataGridColumn headerText="ID" dataField="id"/>
<mx:DataGridColumn headerText="username" dataField="name"/>
<mx:DataGridColumn headerText="password" dataField="password"/>
</mx:columns>
</mx:DataGrid>
<mx:Form x="21" y="471">
<mx:FormItem label="username">
<mx:TextInput id="username"/>
</mx:FormItem>
<mx:FormItem label="password">
<mx:TextInput id="password"/>
</mx:FormItem>
</mx:Form>
<mx:Button x="300" y="503" label="add" click="insert_user()"/>
<mx:Button x="300" y="503" label="update" click="update_user()"/>
<mx:Button x="300" y="533" label="delete" click="delete_user()"/>
</mx:WindowedApplication>
2.
blabla
3.
Herunterladen