SQLite example for AIR

Here is a very simplistic Flex Builder 3 and AIR example that adds and removes records from a table in a local SQLite database. This is not a fully completed AIR project but this code can probably be reused by anyone wanting to get started with AIR+SQLite. There are a couple of other AIR+SQLite examples out there to check out and don’t forget the documentation on the adobe site.

import flash.data.SQLResult;
import flash.filesystem.File;
import flash.data.SQLStatement;
import flash.data.SQLConnection;
import flash.events.SQLEvent;
import flash.events.SQLErrorEvent;
 
import User;
 
private var exampleDB:SQLConnection;
private var exampleDBFile:File;
private var dbStatement:SQLStatement;
 
[Bindable]
private var userData:Array;
 
private function init():void
{
    initAndOpenDatabase();
}
 
private function initAndOpenDatabase():void
{
    exampleDBFile = new File("app-resource:/ExampleDatabase.db");
    exampleDB = new SQLConnection();
    exampleDB.addEventListener(SQLEvent.OPEN, onExampleDBOpened);
    exampleDB.addEventListener(SQLErrorEvent.ERROR, onExampleDBError);
    exampleDB.open(exampleDBFile);
}
 
private function onExampleDBOpened(event:SQLEvent):void
{
    if (event.type == "open")
    {
        getRecords();
    }
}
 
private function onExampleDBError(event:SQLEvent):void
{
}
 
private function getRecords():void
{
    dbStatement = new SQLStatement();
    dbStatement.itemClass = User;
    dbStatement.sqlConnection = exampleDB;
    var sqlQuery:String = "select * from Users";
    dbStatement.text = sqlQuery;
    dbStatement.addEventListener(SQLEvent.RESULT, onDBStatementSelectResult);
    dbStatement.execute();
}
 
private function onDBStatementSelectResult(event:SQLEvent):void
{
    var result:SQLResult = dbStatement.getResult();
    if (result != null)
    {
        userData = result.data;
    }
}
 
private function onDBStatementInsertResult(event:SQLEvent):void
{
    if (exampleDB.totalChanges >= 1)
    {
        getRecords();
    }
}
 
private function addUserToDatabase(user:User):void
{
    var sqlInsert:String = "insert into Users values('"+user.firstname+"','"+user.lastname+"','"+user.email+"');";
    dbStatement.text = sqlInsert;
    dbStatement.removeEventListener(SQLEvent.RESULT, onDBStatementSelectResult);
    dbStatement.addEventListener(SQLEvent.RESULT, onDBStatementInsertResult);
    dbStatement.execute();
}
 
private function onAddUserButtonClicked(event:MouseEvent):void
{
    var user:User = new User();
    user.firstname = firstNameTextInput.text;
    user.lastname = lastNameTextInput.text;
    user.email = emailTextInput.text;
    addUserToDatabase(user);
}
 
private function onUsersDataGridChanged(event:Event):void
{
}
 
private function onRemoveUserButtonClicked(event:MouseEvent):void
{
    removeUserFromDatabase(usersDataGrid.selectedItem as User);
}
 
private function removeUserFromDatabase(user:User):void
{
    var sqlDelete:String = "delete from Users where firstname='"+
                                  user.firstname+"' and lastname='"+
                                  user.lastname+"' and email='"+user.email+"';";
    trace("sqlDelete="+sqlDelete);
    dbStatement.text = sqlDelete;
    dbStatement.removeEventListener(SQLEvent.RESULT, onDBStatementInsertResult);
    dbStatement.addEventListener(SQLEvent.RESULT, onDBStatementDeleteResult);
    dbStatement.execute();
}
 
private function onDBStatementDeleteResult(event:SQLEvent):void
{
    if (exampleDB.totalChanges >= 1)
    {
        getRecords();
    }
}