Bücher online kostenlos Kostenlos Online Lesen
Adobe Air (wiwobooks.com Release)

Adobe Air (wiwobooks.com Release)

Titel: Adobe Air (wiwobooks.com Release) Kostenlos Bücher Online Lesen
Autoren:
Vom Netzwerk:
schreibenden Zugriff hat. Es bietet sich hierfür z. B. das Anwendungs-Dokumentenverzeichnis an.
    Lösungsweg
1. Einbeziehung der Datenbankdatei in das Installationspaket der Anwendung
    2. Im Quelltext der Anwendung: Kopieren der Datenbank vom Anwendungsverzeichnis in das Anwendungs-Dokumentenverzeichnis (oder in ein anderes Verzeichnis mit Schreibzugriff für den Benutzer)
    Voraussetzung
Die Basisdatenbank befindet sich in einem Verzeichnis innerhalb des Arbeitsverzeichnisses Ihres AIR-Projekts.
Stolperfallen/Caveats
    Um den Quelltext einfach und übersichtlich zu halten, böte sich für das einmalige Kopieren der Startdatenbank beim ersten Aufruf der Anwendung ein synchroner Kopiervorgang der Datenbankdatei an. Wenn die zu kopierende Datenbank allerdings sehr umfangreich ist, etwa weil sie bereits mit umfangreichen Basisdaten gefüllt ist, kann eine solche Operation sehr lange dauern. Greifen Sie in einem solchen Fall lieber auf die asynchrone Kopiermethode zurück, und verlagern Sie die anschließenden Datenoperationen in eine andere Funktion, die sowohl vom Erfolgsereignis des Kopiervorgangs als auch von der Initialisierungsfunktion aufgerufen wird, falls die Datenbank schon vorhanden ist:
    private function init():void {
// prüfen, ob DB schon vorhanden
if(!myDBFile.exists) {
    // Ereignis-Listener copyComplete einrichten
// Datenbank asynchron kopieren
}
else {
initData()
}
}
private function copyComplete(e:Event):void {
initData();
}
    private function initData():void {
// Quelltext zu Vorbereitung, Laden und Auswerten von Daten
}
    Listing 13.3 Beispiel: Datenbank asynchron kopieren (Pseudocode)
So geht es
    Wenn Sie die Kommandozeile verwenden, so müssen Sie beim Packen der AIRAnwendung die Datenbank als Kommandozeilenparameter mit angeben wie im folgenden Beispiel:
    adt -package -storetype pkcs12 -keystore myCert.p12 myApp.air myApp-app.xml myDatabase.db
In Flex Builder haben Sie die Möglichkeit, unter dem Menüpunkt Dialog Project Export Release Build… im Bereich AIR File Contents alle Dateien auszu wählen, die in das Anwendungspaket mit einbezogen werden sollen, wie Sie in Abbildung 13.3 erkennen können.
Abbildung 13.3 Einbeziehung einer SQLLite-Datenbank im Flex Builder
    Der Quelltext, der die Datei in ein geeignetes Verzeichnis kopiert, sollte sich innerhalb einer Funktion befinden, die unmittelbar nach dem Laden der Anwendung ausgeführt wird, wie im nachfolgenden Codeausschnitt gezeigt:
    private function init():void {
myDBFile = File.applicationStorageDirectory.resolvePath("myDB.db"); if(!myDBFile.exists) {
    var dbTemplate:File = File.applicationDirectory.
resolvePath("myDB.db");
try {
    dbTemplate.copyTo(myDBFile);
}
catch(e:IOError) {
    // Fehlerbehandlung
}
}
// Quelltext zu Vorbereitung, Laden und Auswertung von Daten
    }
Listing 13.4 Beispiel: Kopieren eines Datenbank-Templates
13.4.5 Datenbankstruktur verbessern
    Bei auf einer einzelnen Datei basierenden Datenbanken werden im Normalfall neue Daten am Ende der Datenbankdatei hinzugefügt. Das gilt auch für neue und geänderte Strukturdaten, die angefügt werden, wenn Sie die Datenbankstruktur durch Hinzufügen von Tabellen, Tabellenspalten, Indizes etc. verändern.
    Auch das Löschen von Daten und Tabellen bewirkt, dass leere Bereiche in der Datenbank entstehen, die nur im Bedarfsfall von der Datenbank-Engine wieder befüllt werden, sodass die Dateigröße im Verlauf der Verwendung wesentlich größer werden kann als die eigentlich darin enthaltenen Netto-Daten. Durch diese Umstände wird es bei anwachsender Dateigröße für die Datenbank-Engine immer schwieriger, performant auf die Datenbank zuzugreifen. In AIR können Sie die Struktur der Datenbank entweder implizit oder explizit bereinigen.
    Implizite Bereinigung
    Implizit kann die Datenbank durch den Parameter autoCompact der open() - bzw. openAsync() -Methode, der als dritter Parameter nach der zu öffnenden Datenbank reference und dem Öffnungsmodus openMode genannt wird, bereinigt werden. Dieser Parameter wird nur ausgewertet, wenn Sie eine neue Datenbank erstellen oder eine Datenbank öffnen, die noch keine Tabellen enthält, und bleibt für die Lebensdauer der Datenbank bestehen.
So könnte die entsprechende Quelltextzeile für das Öffnen einer neuen Datenbank mit impliziter Bereinigung aussehen (dass sowohl die SQLConnection - als auch die File -Instanz instantiiert ist, wird hier vorausgesetzt):
    myDBConnection.open(myDBFile, SQLMode.CREATE, true);
    In der Standardeinstellung

Weitere Kostenlose Bücher