Adobe Air (wiwobooks.com Release)
handleError(e:SQLErrorEvent):void { // Fehlerbehandlung
}
Listing 13.10 Beispiel: Ergebnis-Typzuweisung
13.6.4 Daten einfügen
Zum Einfügen neuer Daten in eine Datenbanktabelle dient das INSERT-Statement. Den zu bestimmenden Spalten des neuen Datensatzes werden die neuen Werte zugewiesen, nicht angeführte Werte erhalten den in der Datentabelle vorgegebenen Standardwert oder, wenn dieser nicht angegeben ist, den Wert 0 :
INSERT INTO main.myTable (name, zahl) VALUES ('Pfeiffer', 4)
Verläuft der Einfügevorgang erfolgreich, wird das Ereignis SQLEvent.RESULT ausgelöst und in der SQLResult -Instanz, die das Ergebnis repräsentiert, wird in der Eigenschaft rowsAffected die Anzahl der betroffenen (= eingefügten) Zeilen zurückgegeben (bei einzelnen Einfügungen also der Wert 1 ).
Lösungsweg
1. Erstellen einer SQLStatement -Instanz
2. Zuweisen der offenen Datenbankverbindung zur Eigenschaft sqlConnection der SQLStatement -Instanz
3. Asynchroner Zugriff: Registrieren von Event-Listenern für SQLEvent.RESULT und SQLErrorEvent.ERROR
4. Definition des INSERT-Statements als Text und dessen Zuweisung zur Eigenschaft text
5. Bei Verwendung von Parametern: Setzen der Parameter im (assoziativen) Array parameters
6. Aufruf der Methode execute() der SQLStatement -Instanz
7. Abruf des Ergebnisses als SQLResult -Instanz mithilfe der SQLStatement -Instanzmethode getResult() im Ereignis-Listener für SQLEvent.RESULT 8. Auswerten des Ergebnisses mithilfe der SQLResult -Eigenschaft rowsAffected
So geht es
Im folgenden Quelltextausschnitt wird ein Datensatz in die Datenbank test_ table eingefügt:
import flash.data.SQLConnection;
import flash.data.SQLStatement;
import flash.data.SQLResult;
import flash.events.SQLEvent;
import flash.events.SQLErrorEvent;
var selectStmt:SQLStatement = new SQLStatement(); // myDBConn ist zu diesem Zeitpunkt bereits geöffnet // (hier nicht gezeigt)
selectStmt.sqlConnection = myDBConn;
selectStmt.addEventListener(SQLErrorEvent.ERROR, handleStmtError); selectStmt.addEventListener(SQLEvent.RESULT, handleStmtResult); var sql:String = "INSERT INTO main.test_table (name, zahl) " +
"VALUES ('Pfeiffer', 4)";
selectStmt.text = sql;
selectStmt.execute();
function handleStmtResult(e:SQLEvent):void {
var stmt:SQLStatement = SQLStatement(e.target);
var result:SQLResult = stmt.getResult();
trace(result.rowsAffected + " Datensatz/-sätze eingefügt.");
}
function handleStmtError(e:SQLErrorEvent):void { trace("Hoppla, da ist bei einem SQL
Statement etwas schiefgelaufen."); trace("Fehler: " + e.text);
trace("Details: " + e.error.details);
}
Listing 13.11 Beispiel: Einfügen von Daten in eine Datenbanktabelle
13.6.5 Daten aktualisieren
Das Aktualisieren von Datensätzen ist dem Einfügen neuer Daten sehr ähnlich. Hier findet das UPDATE-Statement Verwendung. Die zu ändernden Datenfelder werden mit den neuen Werten angegeben, zusätzlich in einer WHERE-Klausel die Bedingung, für welche Datensätze die Änderung gelten soll:
UPDATE main.myTable SET name = 'Gruber' WHERE name = 'Pfeiffer'
War der Änderungsvorgang erfolgreich, wird das Ereignis SQLEvent.RESULT ausgelöst und in der Eigenschaft rowsAffected der SQLResult -Instanz wird die Anzahl der betroffenen (= geänderten) Zeilen zurückgegeben.
Lösungsweg
1. Erstellen einer SQLStatement -Instanz
2. Zuweisen der offenen Datenbankverbindung zur Eigenschaft sqlConnection der SQLStatement -Instanz
3. Asynchroner Zugriff: Registrieren von Event-Listenern für SQLEvent.RESULT und SQLErrorEvent.ERROR
4. Definition des UPDATE-Statements als Text und dessen Zuweisung zur Eigenschaft text
5. Bei Verwendung von Parametern: Setzen der Parameter im (assoziativen) Array parameters
6. Aufruf der Methode execute() der SQLStatement -Instanz
7. Abruf des Ergebnisses als SQLResult -Instanz mithilfe der SQLStatement -Instanzmethode getResult() im Ereignis-Listener für SQLEvent.RESULT
8. Auswerten des Ergebnisses mithilfe der SQLResult -Eigenschaft rowsAffected
So geht es
Der folgende Quelltextausschnitt zeigt die Änderung aller Datensätze in der Datenbank test_table , deren Datenfeld name die Zeichenkette Pfeiffer enthält:
import flash.data.SQLConnection;
import flash.data.SQLStatement;
import flash.data.SQLResult;
import flash.events.SQLEvent;
import flash.events.SQLErrorEvent;
var selectStmt:SQLStatement = new SQLStatement();
// myDBConn ist zu diesem Zeitpunkt bereits geöffnet
// (hier nicht gezeigt)
selectStmt.sqlConnection =
Weitere Kostenlose Bücher