Adobe Air (wiwobooks.com Release)
Zuweisen der Statement-Zeichenkette zur Eigenschaft text der SQLStatement - Instanz
5. Zuweisen von Werten zu den definierten Platzhaltern mithilfe der Eigenschaft parameters (assoziatives Array) der SQLStatement -Instanz
6. Aufruf der SQLStatement -Instanzmethode execute()
7. Auswerten des Ergebnisses im SQLEvent -Ereignis-ListenerNach Bedarf Zuweisen neuer Werte zu den Parametern, erneuter Aufruf von execute() etc.
So geht es
Denken Sie einmal an ein Statement, mit dem Sie für eine lange Liste von IDs aus einer Tabelle die zugehörigen Werte auslesen wollen. Das SQL-Statement könnte etwa für das Element mit der ID 1 so aussehen:
SELECT id, name, wert1, wert2 FROM main.myTable WHERE id = 1
Sie sehen: Wenn Sie diese Abfrage für eine lange Liste von IDs ausführen wollen, müssten Sie für jede ID den Abfragetext neu schreiben.
Was aber, wenn Sie den Hauptteil des Statements, der unverändert bleibt, auch unverändert lassen könnten? Sehen Sie: Das ist genau das, was mit vorbereiteten Statements möglich ist. In unserem Beispiel-Statement ist das einzige Datum, das sich ändert, die Zahl, die für die ID der abzurufenden Informationen steht. Um diesen Wert austauschbar zu machen, wird er einfach durch einen Platzhalter ausgetauscht. Die SQLite-Datenbank-Engine von AIR akzeptiert unbenannte und benannte Platzhalter.
Unbenannte Platzhalter bestehen aus einem Fragezeichen, benannte Parameter können entweder mit einem Doppelpunkt oder einem Klammeraffen beginnen, gefolgt von einem Namen für den Platzhalter. Die folgende Version des Statements ersetzt also den Wert der ID durch einen gültigen Platzhalter:
SELECT id, name, wert1, wert2 FROM main.test_table WHERE id = :id
Diesen Statement-Text müssen Sie der text -Eigenschaft der SQLStatement -Instanz nur ein einziges Mal zuweisen. Anschließend weisen Sie dem Platzhalter vor jedem Aufruf der Methode execute() , die die Abfrage ausführt, neue Werte zu. Jeder Platzhalter wird durch ein entsprechendes Element in einem assoziativen Array repräsentiert, das als Eigenschaft parameters der SQLStatement - Instanz abrufbar ist:
selectStmt.parameters[":id"] = 12;
Nach der Änderung der Parameter des Statements rufen Sie execute() auf, um die Abfrage auszuführen. Nachfolgend nun die Schritte zur Verwendung von benannten Platzhaltern bzw. Parametern noch mal im Zusammenhang:
import flash.data.SQLStatement;
var selectStmt:SQLStatement = new SQLStatement();
var sql:String = "SELECT id, name, wert1, wert2 " +
"FROM myTable WHERE id = :id";
selectStmt.parameters[":id"] = 1;
selectStmt.execute();
Bei Verwendung eines unbenannten Parameters sieht das Beispiel folgendermaßen aus:
import flash.data.SQLStatement;
var selectStmt:SQLStatement = new SQLStatement();
var sql:String = "SELECT id, name, wert1, wert2 " +
"FROM main.test_table WHERE id = ?";
selectStmt.parameters[0] = 1;
selectStmt.execute();
13.7 Transaktionen
Wenn Sie mehrere zusammenhängende Abfragen hintereinander ausführen wollen, ergeben sich Performancevorteile, wenn Sie diese Abfragen in einer Transaktion bündeln. Zusätzlich haben Transaktionen noch einen weiteren Vorteil: Wenn eine Abfrage aus irgendeinem Grund fehlschlägt, Sie aber bereits in den vorherigen Abfragen der Transaktion Änderungen an den Daten vorgenommen haben, können Sie die Transaktion abbrechen und den vor dem Beginn der Transaktion herrschenden Zustand wiederherstellen.
Wenn Sie eine Transaktion beginnen, werden alle Datenbankoperationen gesammelt und im Speicher ausgeführt. Die tatsächliche Übermittlung der Änderungen in die Datenbank geschieht erst mit dem Abschluss der Transaktion.
13.7.1 Transaktion ausführen
Um eine Datenbanktransaktion zu beginnen, rufen Sie die begin() -Methode der geöffneten Datenbankverbindung auf.
Lösungsweg
1. Bei asynchronem Zugriff: Registrieren von Ereignis-Listenern für SQLEvent.BEGIN und SQLErrorEvent.ERROR
2. Aufruf der SQLConnection -Instanzmethode begin()
3. Innerhalb des bzw. beginnend im Ereignis-Listener für SQLEvent.BEGIN (asynchron) oder nach Aufruf der begin() -Methode im try … catch -Block (synchron): Durchführen einer oder mehrerer Datenbankabfragen mithilfe von SQLStatement -Instanzen
4. Bei asynchronem Zugriff: Registrieren von Event-Listenern für SQLEvent.COMMIT
5. Aufruf der SQLConnection -Instanzmethode commit()
6. Bearbeiten von Erfolgs- oder Fehlerereignissen in den Ereignis-Listenern (asynchron) oder im try…catch -Block
Voraussetzung
Geöffnete
Weitere Kostenlose Bücher