Adobe Air (wiwobooks.com Release)
bleiben leere Stellen in der Datenbankdatei nach dem Löschen von Daten erhalten. Wenn Sie den autoCompact -Parameter jedoch auf true setzen, werden Bereiche der Datenbank, die durch eine Lösch- oder andere Schreiboperation frei werden, wieder von der Datenbank belegt. Allerdings kann dadurch die Performance der Datenbank beeinträchtigt sowie die Datenbankdatei verstärkt fragmentiert werden. Um die Struktur der Datenbank zu defragmentieren, müssen Sie die Datenbank explizit bereinigen.
Explizite Bereinigung
Als explizite Methode verfügt die SQLConnection -Instanz über eine Methode compact() , die die Strukturdaten der Hauptdatenbank wieder an den Anfang der Datei stellt und die Tabellendaten so wieder zusammenfasst, sodass Daten einer einzelnen Tabelle möglichst nahe beieinanderliegen. Abhängig von der Größe der Datenbank und dem Fragmentierungsgrad der Daten kann eine compact() - Operation eine längere Zeit beanspruchen. Die explizite Bereinigung kann nicht durchgeführt werden, wenn gerade eine Datenbanktransaktion aktiv ist.
13.5 Bestehende Datenbank öffnen
Sie haben den Befehl zum Öffnen von Datenbankverbindungen bereits im Kontext des Erstellens von Datenbanken kennengelernt: Dies geschieht mit der open() - bzw. openAsync() -Methode der SQLConnection -Instanz, der eine auf die zu öffnende Datenbankdatei verweisende File -Instanz als Parameter mitgegeben wird. Wenn Sie sicherstellen wollen, dass die Datenbank auch tatsächlich vorhanden ist, übergeben Sie der open() -/ openAsync() -Methode zusätzlich einen zweiten Parameter ( openMode ), der bei nicht vorhandener Datenbankdatei einen Fehler bzw. ein Fehlerereignis auslöst. Geeignet hierfür sind die Modi SQLMode.READ und SQLMode.UPDATE.
Lösungsweg
1. Erstellen einer File -Instanz, die auf die zu öffnende Datenbankdatei verweist
2. Erstellen einer SQLConnection -Instanz
3. Bei asynchronem Zugriff: Registrieren von Ereignis-Listenern für SQLEvent.COMPLETE - und SQLErrorEvent.ERROR -Ereignisse
4. Aufruf der Methode open() bzw. openAsync() der SQLConnection -Instanz zum synchronen bzw. asynchronen Öffnen der Datenbankverbindung. Parameter:
reference – die in Schritt 1 erstellte File -Instanz
openMode – der Modus, in dem die Datei geöffnet wird
SQLMode.READ – nur Leseoperationen (z. B. SELECT) möglich SQLMode.UPDATE – Lese- und Schreibzugriff möglich
Weitere Datenbankstatements im SQLEvent.COMPLETE -Ereignis-Listener
So geht es
Das folgende Beispiel entspricht im Wesentlichen dem zur Erstellung einer Datenbank, mit dem Unterschied, dass hier die Datei nicht automatisch erstellt wird, wenn sie nicht vorhanden ist:
private var myDBFile:File;
private var myDBConn:SQLConnection = new SQLConnection();
private function init():void {
myDBFile = File.applicationStorageDirectory. resolvePath("myDB.db");
myDBConn.addEventListener(SQLErrorEvent.ERROR, handleDBError);
myDBConn.addEventListener(SQLEvent.OPEN, handleDBOpen); myDBConn.openAsync(myDBFile, SQLMode.UPDATE);
}
private function handleDBOpen(e:SQLEvent):void { taStatus.text = "Datenbank geöffnet.\n"; // Quelltext zum Abruf oder Verändern von Daten
}
private function handleDBError(e:SQLErrorEvent):void { taStatus.text += "Fehler bei Zugriff auf Datenbank:\n" + e.text;
taStatus.text += "\nFehlerdetails:\n" + e.error.details;
}
]]>
Listing 13.5 Beispiel: Datenbankverbindung öffnen
13.6 Daten abrufen und manipulieren
Wenn Sie nun die Struktur der Datenbank fertiggestellt haben und wissen, wie man eine Verbindung zur Datenbank öffnet, steht dem Befüllen der Datenbank mit Daten nichts mehr im Weg. Alle Aktionen, die Daten in einer Datenbank auslesen, verändern oder löschen, laufen in AIR über eine Instanz der SQLStatement - Klasse ab – Ihnen ist mittlerweile sicherlich aufgefallen, dass diese Klasse das Arbeitstier des Umgangs mit lokalen Datenbanken in AIR darstellt. Doch jede SQLStatement -Instanz ist an eine SQLConnection -Datenbankverbindung gebunden, die zudem noch geöffnet sein muss.
13.6.1 Daten aus Datenbank abrufen
Das Abrufen von Daten geschieht mit SELECT-Statements. SELECT-Statements liefern eine Ergebnismenge, wenn die abgefragten Tabellen nicht leer sind und die Einschränkungskriterien
Weitere Kostenlose Bücher