Adobe Air (wiwobooks.com Release)
resolvePath("someFile.txt"); if(!myFile.exists) {
Alert.show("Die Datei " + myFile.nativePath + " ist nicht vorhanden.", "Fehlermeldung");
return;
}
myFileStream.addEventListener(IOErrorEvent.IO_ERROR, handleError);
myFileStream.addEventListener(Event.COMPLETE, handleReadComplete);
myFileStream.addEventListener(ProgressEvent.PROGRESS, handleProgress);
myFileStream.openAsync(myFile, FileMode.READ); }
private function handleError(e:IOErrorEvent):void { Alert.show("Es gab einen Fehler:\n" +
e.text, "Fehlermeldung");
}
private function handleReadComplete(e:Event):void { lblStatus.text = "Laden abgeschlossen."; var thisStream:FileStream = FileStream(e.target); thisStream.removeEventListener(Event.COMPLETE,
handleReadComplete);
thisStream.close();
}
private function handleProgress(e:ProgressEvent):void { lblStatus.text = "Laden… " + Math.round(e.bytesLoaded * 100 / e.bytesTotal).toString() + "% abgeschlossen."; var thisStream:FileStream = FileStream(e.target); taTextDisplay.text += thisStream.
readMultiByte(thisStream.bytesAvailable, "utf-8");
}
]]>
Listing 12.8 Beispiel: asynchrones Lesen von Daten
Anders als bei Webseiten sind Sie in AIR nicht auf externe oder separat lokal installierte Ressourcen angewiesen, wenn Sie Daten dauerhaft in einer Datenbank speichern wollen. In AIR ist eine SQLite-Engine integriert, die es Ihnen erlaubt, Daten in lokale Datenbankdateien zu speichern – seit AIR 1.5 sogar verschlüsselt.
13 Lokale Datenbanken
Ist eine interaktive Anwendung ohne persistente, das heißt beständige, Datenspeicherung vorstellbar? In der heutigen Zeit wohl nicht mehr. Die persistente Speicherung mithilfe lokaler Dateien haben Sie im letzten Kapitel kennengelernt, nun geht es um Datenbanken. Die in AIR enthaltene SQLite-Engine ist sehr leistungsfähig. Zugegeben: Sie kann als dateibasierte Datenbank nicht mit der Performance eines Datenbankservers mithalten. Allerdings ist das auch nicht ihre Aufgabe.
Wenn Entwickler mit Erfahrungshintergrund in Server- und Datenbankprogrammierung sich mit AIR zu befassen beginnen, begegnen viele von ihnen der SQLite-Datenbank in AIR mit großer Skepsis. »Das skaliert nicht,« sagen die einen, »da nehme ich doch lieber gleich einen lokalen Datenbankserver«, die anderen. Aber: Eine Datenbank in Ihrer Anwendung lebt auf einem lokalen Computer und wird daher immer nur die lokalen Daten des einen individuellen Benutzers auf seiner lokalen Maschine bewältigen müssen (auch wenn diese auch einen beträchtlichen Umfang annehmen können). Ferner ist gerade das Ziel der AIR-Laufzeitumgebung, dass Sie eben nichts zusätzlich installieren müssen, sondern »out of the box« mit Ihrer Anwendung arbeiten können, ohne dass Sie die Benutzerin fragen müssen, ob sie auch wirklich den richtigen Datenbankserver (womöglich noch in einer bestimmten Version) installiert hat.
Große Datenmengen mit AIR verwalten
Ein sehr gutes Beispiel für ein Szenario mit einer sehr umfangreichen Datenbank ist die von der Agentur AKQA für Fiat UK entwickelte Anwendung EcoDrive, die es ermöglicht, während der Fahrt mit einem dafür im Vorfeld entsprechend ausgestatteten Fiat-Automobil gesammelte Fahrdaten auszuwerten. Das Datenvolumen einer Autofahrt beträgt nach Auskunft von AKQA ca. 300 Informationseinheiten pro Minute, sodass für eine einstündige Fahrt ca. 1 MB Daten ausgewertet werden müssen.
Die EcoDrive-Anwendung benötigt für den Import und die anschließende Auswertung auf einem durchschnittlich ausgestatteten PC ca. 90 Sekunden. Erfahren Sie mehr über Fiat EcoDrive unter folgender Website:
http://www.fiat.com/ecodrive
13.1 AIR-Klassen für Datenbankzugriff
Für den Zugriff auf eine lokale SQLite-Datenbank in AIR steht im Paket flash.data eine Vielzahl von ActionScript-Klassen zur Verfügung. Tabelle 13.1 liefert einen Überblick.
Klasse
SQLCollationType
SQLColumnNameStyle
SQLColumnSchema
SQLConnection
SQLError
SQLErrorEvent
SQLErrorOperation
SQLEvent
SQLIndexSchema
SQLMode
SQLResult
Funktion
definiert Konstanten ( BINARY , NO_CASE ) für die Eigenschaft defaultCollectionType einer SQLColumnSchema -Instanz definiert Konstanten ( DEFAULT , LONG, SHORT ) für die Eigenschaft columnNameStyle einer SQLConnection -Instanz liefert Informationen über eine bestimmte Spalte in einer Datentabelle
repräsentiert die Verbindung zu
Weitere Kostenlose Bücher