WEAVE 05.09 – AIR-Anwendung lokaler Datenbank
Bookmark-Anwendung mit AIR
Die Adobe Integrated Runtime (AIR) ermöglicht die Entwicklung plattformübergreifender Webanwendungen für den Desktop, wie sie zum Beispiel von eBay oder AOL eingesetzt werden. Mit dem folgenden Quellcode von Simon Widjaja können Sie in rund drei Stunden eine kleine Anwendung zur Verwaltung von Bookmarks entwickeln.
1// Value Object definieren
{{Listing com.simonwidjaja.workshop.BookmarkVO}}
package com.simonwidjaja.workshop
{
[Bindable]
public class BookmarkVO
{
public var id:int;
public var url:String;
public var title:String;
public var description:String;
public function BookmarkVO( object:Object=null ):void {
if ( object ) {
id = object.id;
url = object.url;
title = object.title;
description = object.description;
}
}
}
}
2// Datenbankverbindung herstellen
{{Listing: DatabaseConnector (1)}}
package com.simonwidjaja.workshop
{
import flash.data.SQLConnection;
import flash.data.SQLResult;
import flash.data.SQLStatement;
import flash.filesystem.File;
public class DatabaseConnector
{
[Bindable] public var bookmarks:Array = new Array();
private var conn:SQLConnection;
private var firstTimeFlag:Boolean;
private static var _instance:DatabaseConnector;
public static function getInstance():DatabaseConnector {
if ( !_instance )
_instance = new DatabaseConnector( new SingletonEnforcer() );
return _instance;
}
public function DatabaseConnector( singleton:SingletonEnforcer ) {
}
public function connect():void {
var file:File = File.applicationStorageDirectory.resolvePath( „Datenbank“ );
trace( „file.nativePath: „+file.nativePath );
firstTimeFlag = ( file.exists ) ? false : true;
conn = new SQLConnection();
conn.open( file );
if ( firstTimeFlag ) createTable();
//else fetchAllBookmarks();
}
private function createTable():void {
var statement:SQLStatement = new SQLStatement();
statement.sqlConnection = conn;
statement.text = „CREATE TABLE bookmarks ( id INTEGER PRIMARY KEY AUTOINCREMENT, „ +
„url CHAR(200), title CHAR(200), description CHAR(1000) );“;
statement.execute();
}
// Hier folgen spŠter die CRUD-Methoden
}
}
class SingletonEnforcer {}
Um sicherzustellen, dass unsere Datenbank wie gewünscht angelegt wird, können wir testweise die connect()-Methode direkt in unserem MXML-Dokument wie folgt ausführen:
Plugin, um das Ergebnis zu prüfen beziehungsweise direkt auf der Datenbank arbeiten zu können: SQLite Manager
3// Datensätze lesen und schreiben
public function fetchAllBookmarks():void {
var statement:SQLStatement = new SQLStatement();
statement.sqlConnection = conn;
statement.text = „SELECT * FROM bookmarks;“;
statement.execute();
var result:SQLResult = statement.getResult();
var bookmarks:Array = new Array();
for each ( var entry:Object in result.data ) {
bookmarks.push( new BookmarkVO( entry ) );
}
this.bookmarks = bookmarks;
}
public function saveBookmark( bookmark:BookmarkVO, action:String ):void {
var statement:SQLStatement = new SQLStatement();
statement.sqlConnection = conn;
if ( action==“update“ ) {
statement.text = „UPDATE bookmarks SET url=:url, title=:title, description=:description WHERE id=:id“;
statement.parameters[„:id“] = bookmark.id;
}
else {
statement.text = „INSERT INTO bookmarks (url, title, description) VALUES (:url, :title, :description);“;
}
statement.parameters[„:url“] = bookmark.url;
statement.parameters[„:title“] = bookmark.title;
statement.parameters[„:description“] = bookmark.description;
statement.execute();
fetchAllBookmarks();
}
public function deleteBookmark( bookmark:BookmarkVO ):void {
var statement:SQLStatement = new SQLStatement();
statement.sqlConnection = conn;
statement.text = „DELETE FROM bookmarks WHERE id=:id;“;
statement.parameters[„:id“] = bookmark.id;
statement.execute();
fetchAllBookmarks();
}
4// View zum Hinzufügen und Ändern
{{Listing com.simonwidjaja.workshop.EditView}}
5// Zusammenfügen der einzelnen Elemente
{{Listing main.mxml}}










