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(); } }
