flash.dataSQLViewSchema Die in einer „SQLViewSchema“-Instanz enthaltenen Informationen beschreiben eine bestimmte Ansicht in einer Datenbank.flash.data:SQLTableSchema Die in einer „SQLViewSchema“-Instanz enthaltenen Informationen beschreiben eine bestimmte Ansicht in einer Datenbank. Zu den verfügbaren Informationen gehören der Name der Ansicht (die name-Eigenschaft), die SQL-Anweisung, mit der die Ansicht erstellt wurde (die sql-Eigenschaft) und Informationen zu den Ansichtsspalten (die columns-Eigenschaft).

Um die Ansichtsschemainformationen für eine Datenbank zu erhalten, laden Sie die Schemainformationen mithilfe der Methode SQLConnection.loadSchema(). Achten Sie dabei darauf, dass null oder SQLViewSchema als Wert für das Argument type angegeben ist. Die views-Eigenschaft der resultierenden „SQLSchemaResult“-Instanz enthält ein Array mit „SQLViewSchema“-Instanzen, die die Ansichten in der Datenbank repräsentieren.

Im Allgemeinen werden „SQLViewSchema“-Instanzen nicht direkt aufgrund von Entwicklercode erstellt.

flash.data.SQLConnection.loadSchema()flash.data.SQLColumnSchemaSQLViewSchema Erstellt eine „SQLViewSchema“-Instanz.databaseStringDer Name der zugeordneten Datenbank. nameStringDer Name der Ansicht. sqlStringDie SQL-Anweisung, mit der die Ansicht erstellt wurde. columnsArrayEin Array mit „SQLColumnSchema“-Instanzen, die die Ansichtsspalten beschreiben. Erstellt eine „SQLViewSchema“-Instanz. Im Allgemeinen wird der „SQLViewSchema“-Konstruktor nicht direkt durch den Entwicklercode aufgerufen. Schemainformationen für eine Datenbank erhalten Sie durch einen Aufruf der Methode SQLConnection.loadSchema().
SQLColumnSchema Die in der „SQLColumnSchema“-Klasse enthaltenen Informationen beschreiben die Merkmale einer spezifischen Spalte in einer Tabelle der Datenbank.Object Die in der „SQLColumnSchema“-Klasse enthaltenen Informationen beschreiben die Merkmale einer spezifischen Spalte in einer Tabelle der Datenbank.

Um die Spaltenschemainformationen für eine oder mehrere Tabellen einer Datenbank zu erhalten, laden Sie die Schemainformationen mithilfe der Methode SQLConnection.loadSchema(). Achten Sie dabei darauf, dass true als Wert für das Argument includeColumnSchema angegeben ist. In der daraus resultierenden SQLSchemaResult-Instanz enthält jede Tabelle und Ansichtsdefinition eine Eigenschaft columns, ein Array mit SQLColumnSchema-Instanzen, welche die Spalten in der Tabelle oder Ansicht repräsentieren.

Im Allgemeinen werden SQLColumnSchema-Instanzen nicht direkt aufgrund von Entwicklercode erstellt.

flash.data.SQLConnection.loadSchema()flash.data.SQLTableSchemaflash.data.SQLViewSchemaSQLColumnSchema Erstellt eine „SQLColumnSchema“-Instanz.nameStringDer Name der Spalte. primaryKeyBooleanGibt an, ob diese Spalte ein Teil des Primärschlüssels für die verknüpfte Tabelle ist. allowNullBooleanGibt an, ob diese Spalte NULL-Werte enthalten kann. autoIncrementBooleanGibt an, ob der Wert dieser Spalte automatisch inkrementiert wird. dataTypeStringDer deklarierte Spaltentyp. defaultCollationTypeStringDie für diese Spalte festgelegte Vergleichsreihenfolge. Dieser Wert entspricht einer der Konstanten in der „SQLCollationType“-Klasse:
  • SQLCollationType.BINARY gibt an, dass die Spalte die Vergleichsreihenfolge BINARY verwendet.
  • SQLCollationType.NO_CASE gibt an, dass die Spalte die Vergleichsreihenfolge NOCASE verwendet, d. h. bei Textvergleichen wird zwischen Groß- und Kleinschreibung unterschieden.
Erstellt eine „SQLColumnSchema“-Instanz. Im Allgemeinen wird der „SQLColumnSchema“-Konstruktor nicht direkt durch den Entwicklercode aufgerufen. Schemainformationen für eine Datenbank erhalten Sie durch einen Aufruf der Methode SQLConnection.loadSchema().
flash.data.SQLConnection.loadSchema()flash.data.SQLCollationType
allowNull Gibt an, ob in dieser Spalte „NULL“-Werte gestattet sind.Boolean Gibt an, ob in dieser Spalte NULL-Werte gestattet sind. Eine Spalte mit der Einschränkung NOT NULL weist den Wert false für die allowNull-Eigenschaft auf. autoIncrement Gibt an, ob der Wert dieser Spalte automatisch inkrementiert wird.Boolean Gibt an, ob der Wert dieser Spalte automatisch inkrementiert wird. Bei einer automatisch inkrementierten Spalte handelt es sich um einen speziellen Typ der Spalte PRIMARY KEY, deren Wert bei der Einfügung einer neuen Zeile in die Tabelle automatisch als nächster Wert in der Reihe von Ganzzahlen erstellt wird. dataType Ruft den Datentyp der Spalte als String auf.String Ruft den Datentyp der Spalte als String auf. Bei dem Wert handelt es sich um den eigentlichen Datentypnamen, der in der Anweisung CREATE TABLE, mit der die Tabelle definiert wird, angegeben ist. Wenn kein Datentyp angegeben ist, lautet der Wert null. defaultCollationType Gibt die standardmäßige Vergleichsreihenfolge an, die für diese Spalte festgelegt wurde.String Gibt die standardmäßige Vergleichsreihenfolge an, die für diese Spalte festgelegt wurde. Der Wert dieser Eigenschaft entspricht einer der Konstanten in der „SQLCollationType“-Klasse:
  • SQLCollationType.BINARY gibt an, dass die Spalte die Vergleichsreihenfolge BINARY verwendet.
  • SQLCollationType.NO_CASE gibt an, dass die Spalte die NOCASE-Vergleichsreihenfolge verwendet, d. h. bei Textvergleichen wird die Groß- und Kleinschreibung nicht berücksichtigt.
flash.data.SQLCollationType
name Ruft den Namen der Spalte ab.String Ruft den Namen der Spalte ab. primaryKey Gibt an, ob es sich bei dieser Spalte um die Primärschlüssselspalte (oder eine der Primärschlüssselspalten bei einem zusammengesetzten Schlüssel) der zugewiesenen Tabelle handelt.Boolean Gibt an, ob es sich bei dieser Spalte um die Primärschlüssselspalte (oder eine der Primärschlüssselspalten bei einem zusammengesetzten Schlüssel) der zugewiesenen Tabelle handelt.
SQLColumnNameStyle Diese Klasse enthält die Konstanten, die die möglichen Werte der Eigenschaft „SQLConnection.columnNameStyle“ darstellen.Object Diese Klasse enthält die Konstanten, die die möglichen Werte der Eigenschaft SQLConnection.columnNameStyle darstellen. Diese Werte geben die verschiedenen Optionen an, mit denen gesteuert wird, wie Spaltennamen (Eigenschaftsnamen) in den als Ergebnis einer SQL SELECT-Anweisung zurückgegebenen Objekte formatiert werden. flash.data.SQLConnection.columnNameStyleDEFAULT Gibt an, das die von einer „SELECT“-Anweisung zurückgegebenen Spaltennamen das Standardformat aufweisen.defaultString Gibt an, das die von einer SELECT-Anweisung zurückgegebenen Spaltennamen das Standardformat aufweisen. Im Standardformat lauten Spaltennamen [tabellenname]_[spaltenname], wenn die Anweisung SELECT mehrere Tabellen enthält, oder [spaltenname], wenn die Anweisung SELECT eine Tabelle enthält. flash.data.SQLConnection.columnNameStyleLONG Gibt an, das die von einer „SELECT“-Anweisung zurückgegebenen Spaltennamen das lange Spaltennamenformat aufweisen.longString Gibt an, das die von einer SELECT-Anweisung zurückgegebenen Spaltennamen das lange Spaltennamenformat aufweisen. In diesem Format lauten Spaltennamen [tabellenname]_[spaltenname], unabhängig davon, wie viele Tabellen die Anweisung SELECT enthält. flash.data.SQLConnection.columnNameStyleSHORT Gibt an, das die von einer „SELECT“-Anweisung zurückgegebenen Spaltennamen das kurze Spaltennamenformat aufweisen.shortString Gibt an, das die von einer SELECT-Anweisung zurückgegebenen Spaltennamen das kurze Spaltennamenformat aufweisen. In diesem Format lauten Spaltennamen [spaltenname], unabhängig davon, wie viele Tabellen die Anweisung SELECT enthält.

Enthält der Ergebnissatz mehrere Spalten mit demselben Namen, so wird dem Ergebnisobjekt nur eine Eigenschaft mit diesem Namen hinzugefügt. Der dieser Eigenschaft zugewiesene Wert stammt aus der letzten Spalte dieses Namens in der Ergebniszeile. Betrachten Sie als Beispiel die folgende SELECT-Anweisung:

	 SELECT customers.customerId, addresses.customerId
	 FROM customers INNER JOIN addresses
	    ON customers.customerId = addresses.customerId
	 

Bei der Ausführung dieser Anweisung für eine SQLConnection mit kurzen Spaltennamen weist jedes Ergebnisobjekt eine Eigenschaft namens customerId auf. Diese Eigenschaft weist den Wert aus der in der Tabelle addresses enthaltenen Spalte customerId auf.

flash.data.SQLConnection.columnNameStyle
SQLSchema Bei der „SQLSchema“-Klasse handelt es sich um die Basisklasse für Schemainformationen zu Datenbankobjekten, wie etwa Tabellen, Ansichten und Indizes.Object Bei der „SQLSchema“-Klasse handelt es sich um die Basisklasse für Schemainformationen zu Datenbankobjekten, wie etwa Tabellen, Ansichten und Indizes.

Um Schemainformationen für eine Datenbank erhalten, laden Sie Schemainformationen mithilfe der Methode SQLConnection.loadSchema(). Die daraus resultierende „SQLSchemaResult“-Instanz enthält Arrays mit Instanzen, die die Objekte in der Datenbank darstellen.

Im Allgemeinen werden „SQLSchema“-Instanzen nicht direkt aufgrund von Entwicklercode erstellt.

flash.data.SQLConnection.loadSchema()SQLSchema Erstellt eine „SQLSchema“-Instanz.databaseStringDer Name der zugeordneten Datenbank. nameStringDer Name des Datenbankobjekts. sqlStringDie SQL, mit der das Datenbankobjekt erstellt wurde. Erstellt eine „SQLSchema“-Instanz. Im Allgemeinen wird der „SQLSchema“-Konstruktor nicht direkt durch den Entwicklercode aufgerufen. Schemainformationen für eine Datenbank erhalten Sie durch einen Aufruf der Methode SQLConnection.loadSchema(). database Der Name der Datenbank, zu der dieses Schemaobjekt gehört.String Der Name der Datenbank, zu der dieses Schemaobjekt gehört. Der Name der Hauptdatenbank, die einer „SQLConnection“-Instanz zugewiesen ist, lautet „main“ (die Datenbankdatei, die durch den Aufruf der Methode open() oder openAsync() einer „SQLConnection“-Instanz geöffnet wurde). Bei anderen Datenbanken, die mithilfe der Methode SQLConnection.attach() mit der Verbindung verknüpft sind, handelt es sich bei dem Wert um den Namen, der im Aufruf der Methode attach() angegeben wurde. flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()flash.data.SQLConnection.attach()name Der Name dieses Schemaobjekts.String Der Name dieses Schemaobjekts. Jedes Objekt in einer Datenbank trägt einen eindeutigen Namen. Der Name ist in der SQL-Anweisung festgelegt, mit der das Objekt erstellt wird (wie etwa die CREATE TABLE-Anweisung für eine Tabelle).

Wenn beispielsweise ein Datenbankindex mithilfe der folgenden SQL-Anweisung erstellt wird, lautet der Wert der Eigenschaft name für dieses Indexschema "customer_index":

CREATE INDEX customer_index ON customers (id)
sql Gibt den gesamten Text der SQL-Anweisung zurück, mit der dieses Schemaobjekt erstellt wurde.String Gibt den gesamten Text der SQL-Anweisung zurück, mit der dieses Schemaobjekt erstellt wurde. Jedes in einer Datenbank enthaltene Objekt wird mithilfe einer SQL-Anweisung erstellt.

Wenn beispielsweise ein Datenbankindex mithilfe der folgenden SQL-Anweisung erstellt wird:

CREATE INDEX customer_index ON customers (id)

handelt es sich bei der Eigenschaft sql für das Indexschema um den gesamten Text der Anweisung.

SQLCollationType Diese Klasse enthält sowohl die Konstanten, die die möglichen Werte für den defaultCollationType-Parameter im SQLColumnSchema-Konstruktor darstellen, als auch diejenigen, für die SQLColumnSchema.defaultCollationType-Eigenschaft.Object Diese Klasse enthält sowohl die Konstanten, die die möglichen Werte für den defaultCollationType-Parameter im SQLColumnSchema-Konstruktor darstellen, als auch diejenigen, für die SQLColumnSchema.defaultCollationType-Eigenschaft.

Diese Werte repräsentieren verschiedene Vergleichsreihenfolgen, die für eine Spalte in einer Datenbanktabelle angegeben werden können. Mithilfe einer Vergleichsreihenfolge können Daten sortiert und verglichen werden, z. B. ob in der Datenbank zwischen Groß- und Kleinschreibung unterschieden wird.

Weitere Informationen zum Definieren und Verwenden von Sortierfolgen finden Sie im Abschnitt „COLLATE“ im Anhang „SQL-Unterstützung in lokalen Datenbanken“.

flash.data.SQLColumnSchema.defaultCollationTypeBINARY Gibt an, dass die Vergleichsreihenfolge „BINARY“ auf die Spalte angewendet wird.binaryString Gibt an, dass die Vergleichsreihenfolge BINARY auf die Spalte angewendet wird. Bei SQLCollationType.BINARY werden zwei Werte anhand ihres Bytewertes verglichen, die Textkodierung der Zeichen wird nicht berücksichtigt.

Wenn ein binärer Vergleich auf Werte der TEXT-Speicherklasse angewendet wird, wird beim Sortieren und Vergleichen der Spaltenwerte in der Datenbank zwischen Groß- und Kleinschreibung unterschieden.

flash.data.SQLColumnSchema.defaultCollationType
NO_CASE Gibt an, dass die Vergleichsreihenfolge „NOCASE“ auf die Spalte angewendet wird.noCaseString Gibt an, dass die Vergleichsreihenfolge NOCASE auf die Spalte angewendet wird. Bei SQLCollationType.NO_CASE wird beim Sortieren und Vergleichen von Werten nicht zwischen Groß- und Kleinschreibung unterschieden. flash.data.SQLColumnSchema.defaultCollationType
SQLSchemaResult Eine „SQLSchemaResult“-Instanz enthält die Informationen, die aus einem Aufruf der Methode „SQLConnection.loadSchema()“ resultieren.Object Eine „SQLSchemaResult“-Instanz enthält die Informationen, die aus einem Aufrufen der Methode SQLConnection.loadSchema() resultieren. Sie enthält vier Arrayeigenschaften mit den angeforderten Schemadaten, die auf den Argumentwerten beim Aufrufen von SQLConnection.loadSchema() basieren.

Um die „SQLSchemaResult“-Instanz für einen Aufruf von SQLConnection.loadSchema() abzurufen, müssen Sie die Methode getSchemaResult() der „SQLConnection“-Instanz aufrufen. Im Allgemeinen werden „SQLSchemaResult“-Instanzen nicht direkt aufgrund von Entwicklercode erstellt.

flash.data.SQLConnection.loadSchema()flash.data.SQLConnection.getSchemaResult()SQLSchemaResult Erstellt eine „SQLSchemaResult“-Instanz.tablesArrayEin Array mit „SQLTableSchema“-Instanzen, wie in der Anforderung loadSchema() angegeben. viewsArrayEin Array mit „SQLViewSchema“-Instanzen, wie in der Anforderung loadSchema() angegeben. indicesArrayEin Array mit „SQLIndexSchema“-Instanzen, wie in der Anforderung loadSchema() angegeben. triggersArrayEin Array mit „SQLTriggerSchema“-Instanzen, wie in der Anforderung loadSchema() angegeben. Erstellt eine „SQLSchemaResult“-Instanz. Im Allgemeinen wird der „SQLSchemaResult“-Konstruktor nicht direkt durch den Entwicklercode aufgerufen. Schemainformationen für eine Datenbank erhalten Sie durch einen Aufruf der Methode SQLConnection.loadSchema(). flash.data.SQLConnection.loadSchema()indices Ein Array mit „SQLIndexSchema“-Instanzen, die in einem Aufruf von „SQLConnection.loadSchema()“ angefordert wurden.Array Ein Array mit SQLIndexSchema-Instanzen, die in einem Aufruf vonSQLConnection.loadSchema() angefordert wurden. Wenn die angegebenen Datenbanken keine Indizes enthalten oder wenn der Aufruf von loadSchema() angibt, dass Indizes aus dem Ergebnis ausgeschlossen werden sollen, handelt es sich bei der Eigenschaft indices um ein leeres Array (ein Array, dessen Eigenschaft length den Wert „0“ hat). flash.data.SQLConnection.loadSchema()flash.data.SQLIndexSchematables Ein Array mit „SQLTableSchema“-Instanzen, die in einem Aufruf von „SQLConnection.loadSchema()“ angefordert wurden.Array Ein Array mit SQLTableSchema-Instanzen, die in einem Aufruf von SQLConnection.loadSchema() angefordert wurden. Wenn die angegebenen Datenbanken keine Tabellen enthalten oder wenn der Aufruf von loadSchema() angibt, dass Tabellen aus dem Ergebnis ausgeschlossen werden sollen, handelt es sich bei der Eigenschaft tables um ein leeres Array (ein Array, dessen Eigenschaft length den Wert „0“ hat). flash.data.SQLConnection.loadSchema()flash.data.SQLTableSchematriggers Ein Array mit „SQLTriggerSchema“-Instanzen, die in einem Aufruf von „SQLConnection.loadSchema()“ angefordert wurden.Array Ein Array mit SQLTriggerSchema-Instanzen, die in einem Aufruf von SQLConnection.loadSchema() angefordert wurden. Wenn die angegebenen Datenbanken keine Auslöser enthalten oder wenn der Aufruf von loadSchema() angibt, dass Auslöser aus dem Ergebnis ausgeschlossen werden sollen, handelt es sich bei der Eigenschaft triggers um ein leeres Array (ein Array, dessen Eigenschaft length den Wert „0“ hat). flash.data.SQLConnection.loadSchema()flash.data.SQLTriggerSchemaviews Ein Array mit „SQLViewSchema“-Instanzen, die in einem Aufruf von „SQLConnection.loadSchema()“ angefordert wurden.Array Ein Array mit SQLViewSchema-Instanzen, die in einem Aufruf von SQLConnection.loadSchema() angefordert wurden. Wenn die angegebenen Datenbanken keine Ansichten enthalten oder wenn der Aufruf von loadSchema() angibt, dass Ansichten aus dem Ergebnis ausgeschlossen werden sollen, handelt es sich bei der Eigenschaft views um ein leeres Array (ein Array, dessen Eigenschaft length den Wert „0“ hat). flash.data.SQLConnection.loadSchema()flash.data.SQLViewSchema
SQLTransactionLockType Diese Klasse enthält die Konstanten, die die möglichen Werte des Parameters „option“ der Methode „SQLConnection.begin()“ darstellen.Object Diese Klasse enthält die Konstanten, die die möglichen Werte des Parameters option der Methode SQLConnection.begin() darstellen. flash.data.SQLConnection.begin()DEFERRED Gibt die verzögerte Sperrtransaktionsoption an.deferredString Gibt die verzögerte Sperrtransaktionsoption an. Eine verzögerte Sperrtransaktion erwirbt erst beim ersten Zugriff auf die Datenbank eine Sperre. Bei einer verzögerten Transaktion wird eine Sperre erst beim ersten Lese- oder Schreibvorgang erworben. flash.data.SQLConnection.begin()EXCLUSIVE Gibt die exklusive Sperrtransaktionsoption an.exclusiveString Gibt die exklusive Sperrtransaktionsoption an. Eine exklusive Sperrtransaktion erwirbt sofort eine Sperre an der Datenbank. Andere „SQLStatement“-Objekte, die über eine andere SQLConnection (in derselben oder einer anderen AIR-Anwendung) an derselben Datenbank ausgeführt werden, können weder Daten in der Datenbank lesen noch Daten in die Datenbank schreiben. flash.data.SQLConnection.begin()IMMEDIATE Gibt die sofortige Sperrtransaktionsoption an.immediateString Gibt die sofortige Sperrtransaktionsoption an. Eine sofortige Sperrtransaktion erwirbt sofort eine Sperre an der Datenbank. „SQLStatement“-Objekte, die über eine andere SQLConnection (in derselben oder einer anderen AIR-Anwendung) an derselben Datenbank ausgeführt werden, können Daten in der Datenbank lesen, aber keine Daten in die Datenbank schreiben. Wenn andere Verbindungen Daten in der Datenbank lesen, gilt jedoch, dass der ursprüngliche Status der Daten in der Datenbank identisch ist mit dem Status der Datenbank, bevor durch die Eingangstransaktion der „SQLConnection“-Instanz die Methode begin() aufgerufen wurde. Alle ungebundenen Datenänderungen, die im Rahmen einer sofortigen Sperrtransaktion vorgenommen wurden, stehen anderen Verbindungen nicht zur Verfügung. flash.data.SQLConnection.begin()SQLConnection Mithilfe einer „SQLConnection“-Instanz wird die Erstellung von und Verbindung mit lokalen SQL-Datenbankdateien (lokale Datenbanken) verwaltet.flash.events:EventDispatcher Mithilfe einer „SQLConnection“-Instanz wird die Erstellung von und Verbindung mit lokalen SQL-Datenbankdateien (lokale Datenbanken) verwaltet.

Die Funktionen der SQLConnection-Klasse werden in mehrere Kategorien unterteilt:

  • Eine lokale SQL-Datenbankdatei wird erstellt oder geöffnet, indem die open()-Methode der SQLConnection-Instanz für die sqlConnection-Eigenschaft von SQLStatement aufgerufen wird.

  • Außerdem bietet die SQLConnection-Klasse Möglichkeiten für SQL-Anweisungen, einschließlich einer Funktionalität zum Ausführen mehrerer Anweisungen in einer Transaktion. Transaktionen werden mithilfe der Methoden begin(), commit() und rollback() verwaltet. Zusätzlich ermöglichen die Methoden setSavepoint(), releaseSavepoint() und rollbackToSavepoint() es Code, Speicherpunkte zu definieren und zu verwalten. Diese werden verwendet, um Transaktionen in Gruppen von Vorgängen zu unterteilen.

  • Die SQLConnection-Klasse bietet Zugriff auf Datenbankschemainformationen zu den verbundenen Datenbanken. Im Schema einer Datenbank werden die Definitionen ihrer Tabellen, Spalten, Indizes und Auslöser beschrieben. Weitere Informationen finden Sie im Abschnitt zur loadSchema()-Methode.

  • Mithilfe der SQLConnection-Klasse können Datenbanken unter Verwendung von AES-CCM verschlüsselt werden. Dadurch können Daten sowohl identifiziert als auch geschützt werden. Zum Verschlüsseln einer Datenbank muss bei deren Erstellung ein 16-Byte-Schlüssel festgelegt werden (durch ein ByteArray). Dieser Schlüssel kann später mithilfe der SQLConnection.reencrypt()-Methode geändert werden. Durch die Verschlüsselung wird die Leistung beim Schreiben in die Datenbank und beim Lesen daraus verringert. Die Verschlüsselung wird auf die auf der Festplatte gespeicherten Daten angewendet, nicht jedoch auf den temporären Datencache im Arbeitsspeicher. Für Datenbanken im Speicher wird die Verschlüsselung nicht unterstützt.

  • Mithilfe einer SQLConnection-Instanz können Ereignisbenachrichtigungen auf Datenbankebene empfangen und Konfigurationssteuerungen aller Aspekte einer Datenbank, einschließlich Seitengröße im Cache, Verfahrensstornierung und Optionen zur Anweisungsausführung, vorgenommen werden.

Eine SQLConnection-Instanz wird entweder im asynchronen oder im synchronen Modus ausgeführt. Für eine Ausführung im synchronen Modus verbinden Sie die „SQLConnection“-Instanz mithilfe der Methode open() mit der Hauptdatenbank. Für eine Ausführung im asynchronen Modus verbinden Sie die „SQLConnection“-Instanz mithilfe der Methode openAsync() mit der Hauptdatenbank.

Im asynchronen Modus wird mithilfe von Ereignis-Listenern oder einer Responder-Instanz bestimmt, wann ein Vorgang erfolgreich abgeschlossen wird oder fehlschlägt. Die Vorgänge werden im Hintergrund ausgeführt und nicht im Hauptanwendungs-Thread, d. h. die Anwendung wird weiterhin ausgeführt und reagiert auch während der Ausführung der Datenbankvorgänge auf Benutzereingriffe. Jede asynchrone SQLConnection-Instanz führt SQL-Anweisungen in ihrem eigenen Thread aus.

Im asynchronen Modus starten Sie einen bestimmten Vorgang durch ein Aufrufen der entsprechenden Methode. Um den Abschluss (oder das Fehlschlagen) des Vorgangs festzustellen, registrieren Sie einen Listener für das entsprechende Ereignis. Zu jedem Vorgang gibt es ein zugeordnetes Ereignis, das beim erfolgreichen Abschluss des Vorgangs ausgelöst wird. Wenn beispielsweise der Aufruf einer openAsync()-Methode erfolgreich abgeschlossen wird (wenn die Datenbankverbindung hergestellt wird), wird das Ereignis open ausgelöst. Beim Fehlschlagen eines Vorgangs wird ein error-Ereignis ausgelöst. Die „SQLError“-Instanz in der Eigenschaft error des „SQLErrorEvent“-Objekts enthält Informationen über den jeweiligen Fehler, einschließlich des versuchten Vorgangs und des Grunds für das Fehlschlagen.

Im synchronen Modus brauchen Sie keine Ereignis-Listener zu registrieren, um den Abschluss oder das Fehlschlagen eines Vorgangs zu bestimmen. Zur Identifizierung der Fehler schließen Sie die Anweisungen, die Fehler auslösen, in einen try..catch-Block ein. Da synchrone Vorgänge im Hauptausführungs-Thread ausgeführt werden, werden alle Anwendungsfunktionen (einschließlich Aktualisierung des Bildschirms und Zulassen von Maus- und Tastaturinteraktion) angehalten, während der Datenbankvorgang ausgeführt wird. Bei längerfristigen Vorgängen kann dies eine spürbare Pause der Anwendung verursachen.

flash.data.SQLStatementflash.events.SQLEventflash.events.SQLErrorEventflash.errors.SQLErrorKurzanleitung: Asynchrones Arbeiten mit einer lokalen SQL-Datenbank (Flex)Kurzanleitung: Asynchrones Arbeiten mit einer lokalen SQL-Datenbank (Flash)Kurzanleitung: Asynchrones Arbeiten mit einer lokalen SQL-Datenbank (HTML)Kurzanleitung: Synchrones Arbeiten mit einer lokalen SQL-Datenbank (Flex)Kurzanleitung: Synchrones Arbeiten mit einer lokalen SQL-Datenbank (Flash)Kurzanleitung: Synchrones Arbeiten mit einer lokalen SQL-Datenbank (HTML)update Wird ausgelöst, wenn sich in einer der verbundenen Datenbanken in einer Tabelle Daten aufgrund eines SQL „UPDATE“-Befehls ändern.flash.events.SQLUpdateEvent.UPDATEflash.events.SQLUpdateEvent Wird ausgelöst, wenn sich in einer der verbundenen Datenbanken in einer Tabelle Daten aufgrund eines SQL UPDATE-Befehls ändern. Bei dieser Datenänderung kann es sich um ein direktes Ergebnis der Ausführung einer UPDATE-Anweisung durch eine SQLStatement-Instanz handeln. Es kann sich aber auch um ein indirektes Ergebnis handeln, wenn ein Auslöser auf eine Anweisungsausführung reagiert hat. flash.data.SQLStatementsetSavepoint Wird ausgelöst, wenn der Vorgang einer setSavepoint()-Methode erfolgreich ausgeführt wurde.flash.events.SQLEvent.SET_SAVEPOINTflash.events.SQLEvent Wird abgesetzt, wenn der Vorgang einer setSavepoint()-Methode erfolgreich ausgeführt wurde. setSavepoint()schema Wird ausgelöst, wenn der Vorgang einer „loadSchema()“-Methode erfolgreich ausgeführt wurde und die Schemaergebnisse bereit sind.flash.events.SQLEvent.SCHEMAflash.events.SQLEvent Wird ausgelöst, wenn der Vorgang einer loadSchema()-Methode erfolgreich ausgeführt wurde und die Schemaergebnisse bereit sind. loadSchema()rollbackToSavepoint Wird abgesetzt, wenn der Vorgang einer rollbackToSavepoint()-Methode erfolgreich ausgeführt wurde.flash.events.SQLEvent.ROLLBACK_TO_SAVEPOINTflash.events.SQLEvent Wird abgesetzt, wenn der Vorgang einer rollbackToSavepoint()-Methode erfolgreich ausgeführt wurde. rollbackToSavepoint()rollback Wird ausgelöst, wenn der Vorgang einer „rollback()“-Methode erfolgreich ausgeführt wurde.flash.events.SQLEvent.ROLLBACKflash.events.SQLEvent Wird ausgelöst, wenn der Vorgang einer rollback()-Methode erfolgreich ausgeführt wurde. rollback()releaseSavepoint Wird abgesetzt, wenn der Vorgang einer releaseSavepoint()-Methode erfolgreich ausgeführt wurde.flash.events.SQLEvent.RELEASE_SAVEPOINTflash.events.SQLEvent Wird abgesetzt, wenn der Vorgang einer releaseSavepoint()-Methode erfolgreich ausgeführt wurde. releaseSavepoint()reencrypt Wird ausgelöst, wenn der Vorgang einer reencrypt()-Methode erfolgreich ausgeführt wurde.flash.events.SQLEvent.REENCRYPTflash.events.SQLEvent Wird ausgelöst, wenn der Vorgang einer reencrypt()-Methode erfolgreich ausgeführt wurde. reencrypt()open Wird ausgelöst, wenn der Vorgang einer „openAsync()“-Methode erfolgreich ausgeführt wurde.flash.events.SQLEvent.OPENflash.events.SQLEvent Wird ausgelöst, wenn der Vorgang einer openAsync()-Methode erfolgreich ausgeführt wurde. openAsync()insert Wird ausgelöst, wenn sich in einer der verbundenen Datenbanken in einer Tabelle Daten aufgrund eines SQL INSERT-Befehls ändern.flash.events.SQLUpdateEvent.INSERTflash.events.SQLUpdateEvent Wird ausgelöst, wenn sich in einer der verbundenen Datenbanken in einer Tabelle Daten aufgrund eines SQL INSERT-Befehls ändern. Bei dieser Datenänderung kann es sich um ein direktes Ergebnis der Ausführung einer INSERT-Anweisung durch eine SQLStatement-Instanz handeln, oder ein indirektes Ergebnis, wenn ein Auslöser auf eine Anweisungsausführung reagiert hat. flash.data.SQLStatementerror Wird ausgelöst, wenn ein asynchroner Vorgang des „SQLConnection“-Objekts einen Fehler ergibt.flash.events.SQLErrorEvent.ERRORflash.events.SQLErrorEvent Wird ausgelöst, wenn ein asynchroner Vorgang des „SQLConnection“-Objekts einen Fehler ergibt. Die als Ereignisobjekt ausgelöste „SQLErrorEvent“-Instanz verfügt über eine error-Eigenschaft und darin sind Informationen zu dem versuchten Vorgang und dem Grund für das Fehlschlagen enthalten. detach Wird ausgelöst, wenn der Vorgang einer „detach()“-Methode erfolgreich ausgeführt wurde.flash.events.SQLEvent.DETACHflash.events.SQLEvent Wird ausgelöst, wenn der Vorgang einer detach()-Methode erfolgreich ausgeführt wurde. detach()delete Wird ausgelöst, wenn sich in einer der verbundenen Datenbanken in einer Tabelle Daten aufgrund eines SQL „DELETE“-Befehls ändern.flash.events.SQLUpdateEvent.DELETEflash.events.SQLUpdateEvent Wird ausgelöst, wenn sich in einer der verbundenen Datenbanken in einer Tabelle Daten aufgrund eines SQL DELETE-Befehls ändern. Bei dieser Datenänderung kann es sich um ein direktes Ergebnis der Ausführung einer DELETE-Anweisung durch eine SQLStatement-Instanz handeln. Es kann sich aber auch um ein indirektes Ergebnis handeln, wenn ein Auslöser auf eine Anweisungsausführung reagiert hat. flash.data.SQLStatementdeanalyze Wird ausgelöst, wenn der Vorgang einer „deanalyze()“-Methode erfolgreich ausgeführt wurde.flash.events.SQLEvent.DEANALYZEflash.events.SQLEvent Wird ausgelöst, wenn der Vorgang einer deanalyze()-Methode erfolgreich ausgeführt wurde. deanalyze()commit Wird ausgelöst, wenn der Vorgang einer „commit()“-Methode erfolgreich ausgeführt wurde.flash.events.SQLEvent.COMMITflash.events.SQLEvent Wird ausgelöst, wenn der Vorgang einer commit()-Methode erfolgreich ausgeführt wurde. commit()close Wird ausgelöst, wenn der Vorgang einer „close()“-Methode erfolgreich ausgeführt wurde.flash.events.SQLEvent.CLOSEflash.events.SQLEvent Wird ausgelöst, wenn der Vorgang einer close()-Methode erfolgreich ausgeführt wurde. close()compact Wird ausgelöst, wenn der Vorgang einer „compact()“-Methode erfolgreich ausgeführt wurde.flash.events.SQLEvent.COMPACTflash.events.SQLEvent Wird ausgelöst, wenn der Vorgang einer compact()-Methode erfolgreich ausgeführt wurde. compact()cancel Wird ausgelöst, wenn der Vorgang einer „cancel()“-Methode erfolgreich ausgeführt wurde.flash.events.SQLEvent.CANCELflash.events.SQLEvent Wird ausgelöst, wenn der Vorgang einer cancel()-Methode erfolgreich ausgeführt wurde. cancel()begin Wird ausgelöst, wenn der Vorgang einer „begin()“-Methode erfolgreich ausgeführt wurde.flash.events.SQLEvent.BEGINflash.events.SQLEvent Wird ausgelöst, wenn der Vorgang einer begin()-Methode erfolgreich ausgeführt wurde. begin()attach Wird ausgelöst, wenn der Vorgang einer „attach()“-Methode erfolgreich ausgeführt wurde.flash.events.SQLEvent.ATTACHflash.events.SQLEvent Wird ausgelöst, wenn der Vorgang einer attach()-Methode erfolgreich ausgeführt wurde. attach()analyze Wird ausgelöst, wenn ein „analyze()“-Vorgang erfolgreich ausgeführt wurde.flash.events.SQLEvent.ANALYZEflash.events.SQLEvent Wird ausgelöst, wenn ein analyze()-Vorgang erfolgreich ausgeführt wurde. analyze()SQLConnection Erstellt eine „SQLConnection“-Instanz.wenn der Konstruktor aus einer Sandbox außerhalb der Hauptanwendungs-Sandbox aufgerufen wird. SecurityErrorSecurityError Erstellt eine „SQLConnection“-Instanz. addEventListener Registriert ein Ereignis-Listener-Objekt bei einem EventDispatcher-Objekt, sodass der Listener über ein Ereignis benachrichtigt wird.typeStringDer Typ des Ereignisses. listenerFunctionDie Listener-Funktion, die das Ereignis verarbeitet. Diese Funktion muss ein Ereignisobjekt als einzigen Parameter akzeptieren und darf keinen Wert zurückgeben, wie das nachfolgende Beispiel zeigt: function(evt:Event):void

Der Name der Funktion ist beliebig.

useCaptureBooleanfalse Bestimmt, ob der Listener in der Erfassungsphase oder in der Ziel- und Bubbling-Phase arbeitet. Ist useCapture auf true gesetzt, so verarbeitet der Listener das Ereignis nur während der Erfassungsphase und nicht während der Ziel- oder Bubbling-Phase. Hat useCapture hingegen den Wert false, verarbeitet der Listener das Ereignis nur während der Ziel- oder Bubbling-Phase. Um auf das Ereignis in allen drei Phasen zu warten, rufen Sie addEventListener() zweimal auf; einmal ist useCapture auf true gesetzt, und beim zweiten Mal hat useCapture den Wert false. priorityint0.0Die Prioritätsstufe des Ereignis-Listeners. Die Priorität wird durch eine vorzeichenbehaftete 32-Bit-Ganzzahl zugewiesen. Je höher die Zahl, desto höher die Priorität. Alle Listener mit der Priorität n werden vor Listenern mit der Priorität n -1 verarbeitet. Wenn zwei oder mehr Listener die gleiche Priorität aufweisen, werden sie in der Reihenfolge verarbeitet, in der sie hinzugefügt wurden. Die Standardpriorität ist 0. useWeakReferenceBooleanfalseBestimmt, ob der Verweis auf den Listener stark oder schwach ist. Ein starker Verweis (der Standard) verhindert, dass der Listener von einem Garbage Collector entfernt wird. Ein schwacher Verweis hingegen nicht.

Funktionen von Mitgliedern auf Klassenebene werden nicht vom Garbagekollektor entfernt. Daher können Sie useWeakReference für Mitgliedsfunktionen auf Klassenebene auf true setzen, ohne dass sie vom Garbagekollektor entfernt werden. Wenn Sie useWeakReference auf true setzen bei einem Listener, der eine verschachtelte innere Funktion ist, wird die Funktion vom Garbagekollektor entfernt. Indem Sie Verweise auf die innere Funktion erstellen (d. h sie in einer anderen Variable speichern), umgehen Sie die Garbage Collection, sodass die Funktion permanent gespeichert bleibt.

Registriert ein Ereignis-Listener-Objekt bei einem EventDispatcher-Objekt, sodass der Listener über ein Ereignis benachrichtigt wird. Sie können Ereignis-Listener bei allen Knoten in der Anzeigeliste für eine bestimmte Art von Ereignis, Phase oder Priorität registrieren.

Nachdem Sie einen Ereignis-Listener erfolgreich registriert haben, können Sie seine Priorität nicht durch weitere Aufrufe von addEventListener() ändern. Um die Priorität eines Listeners zu ändern, müssen Sie zunächst removeListener() aufrufen. Anschließend können Sie den Listener mit der neuen Prioritätsstufe erneut aufrufen.

Nach der Registrierung des Listeners haben nachfolgende Aufrufe von addEventListener() mit einem anderen type- oder useCapture-Wert eine separate Listener-Registrierung zur Folge. Wenn Sie beispielsweise zuerst einen Listener registrieren, für den useCapture auf true gesetzt ist, wird dieser nur während der Aufnahmephase aktiv sein. Wenn Sie addEventListener() für dasselbe Listener-Objekt erneut aufrufen, diesmal aber useCapture auf false gesetzt ist, werden zwei separate Listener angelegt: einer, der während der Aufnahmephase aktiv ist und ein zweiter, der während der Ziel- und Bubbling-Phase aktiv ist.

Sie können einen Ereignis-Listener nicht nur für die Ziel- oder Bubbling-Phase registrieren. Die beiden Phasen hängen während der Registrierung immer zusammen, da Bubbling nur für übergeordnete Elemente des Zielknotens gilt.

Wenn Sie einen Ereignis-Listener nicht mehr brauchen, entfernen sie ihn, indem Sie removeEventListener() aufrufen. Andernfalls könnte es zu Speicherproblemen kommen. Ereignis-Listener werden nicht automatisch aus dem Speicher entfernt, da der Garbage Collector den Listener nicht entfernt, solange das auslösende Objekt vorhanden ist (sofern der useWeakReference-Parameter auf true gesetzt ist).

Beim Kopieren einer EventDispatcher-Instanz werden zugewiesene Ereignis-Listener nicht kopiert. (Wenn ein neu angelegter Knoten einen Ereignis-Listener benötigt, müssen Sie den Listener nach dem Erstellen des Knotens zuweisen.) Wenn Sie jedoch eine EventDispatcher-Instanz verschieben, werden zugewiesene Ereignis-Listener ebenfalls verschoben.

Wenn der Ereignis-Listener bei einem Knoten registriert wird, während mit diesem Knoten ein Ereignis durchgeführt wird, so wird der Ereignis-Listener während der aktuellen Phase nicht ausgelöst, kann aber während einer späteren Phase im Ereignisablauf ausgelöst werden, etwa während der Bubbling-Phase.

Wird ein Ereignis-Listener von einem Knoten entfernt, während mit dem Knoten ein Ereignis durchgeführt wird, so wird er von den aktuellen Aktionen immer noch ausgelöst. Nachdem er entfernt worden ist, wird der Ereignis-Listener nicht wieder aufgerufen (es sei denn er wird für spätere Verarbeitungsvorgänge erneut aufgerufen).

analyze Sammelt statistische Daten über Datenbankindizes und speichert sie in der Datenbank.Wenn diese Methode aufgerufen wird und die „SQLConnection“-Instanz ist an keine Datenbank angeschlossen, hat die connected-Eigenschaft den Wert false. IllegalOperationErrorflash.errors:IllegalOperationErrorwenn der Vorgang im synchronen Ausführungsmodus fehlschlägt. SQLErrorflash.errors:SQLErrorresourceNameStringnullDer Name der Datenbank oder Tabelle, deren Indizes analysiert werden. Wenn es sich bei der angegebenen Ressource um eine Tabelle handelt, deren Name nur einmal in allen verknüpften Datenbanken vorkommt, brauchen Sie nur den Tabellennamen anzugeben. Sie können einen Tabellennamen jedoch auch als [datenbankname].[tabellenname] angeben, um bei nicht eindeutigen Tabellennamen Missverständnisse zu vermeiden. Weist der Parameter resourceName den Wert null (Standard) auf, werden alle Indizes in allen verknüpften Datenbanken analysiert. responderflash.net:RespondernullEin Objekt, das die Methoden angibt, die im Anschluss an einen erfolgreich abgeschlossenen oder fehlgeschlagenen Vorgang aufgerufen werden. Wenn im asynchronen Ausführungsmodus das Argument responder den Wert null aufweist, wird bei Abschluss der Ausführung ein analyze- oder error-Ereignis ausgelöst. Sammelt statistische Daten über Datenbankindizes und speichert sie in der Datenbank. Diese Statistiken können dann vom Abfrageoptimierer verwendet werden (der Teil der Datenbank-Engine, der die effizienteste Ausführungsweise für jede Anweisung bestimmt). Aufgrund dieser Statistiken kann der Abfrageoptimierer eine bessere Entscheidung treffen, welche Indexpositionen bei der Ausführung einer bestimmten Abfrage angewendet werden sollen.

Wenn für eine Datenbank Indexpositionen definiert wurden, aber die Methode analyze() wurde nicht aufgerufen, werden zur Laufzeit Anweisungen mithilfe dieser Indexpositionen ausgeführt. Ohne die zusätzlichen statistischen Daten, die durch die analyze()-Methode generiert werden, wird zur Laufzeit möglicherweise nicht die effizienteste Indexposition für eine bestimmte Abfrage ausgewählt.

Ändern sich die Daten einer Tabelle (aufgrund einer INSERT-, UPDATE- oder DELETE-Anweisung), werden auch die dieser Tabelle zugeordneten Indizes geändert. Die durch die Methode analyze() erzeugten statistischen Informationen werden dagegen nicht automatisch aktualisiert. Daher ist es im Allgemeinen empfehlenswert, die analyze()-Methode nach einer größeren Anzahl von Datenänderungen erneut aufzurufen. Welcher Vorteil aus einer erneuten Ausführung von analyze() gezogen werden kann, hängt jedoch von mehreren Faktoren ab: der Anzahl der für eine Tabelle definierten Indizes, dem Verhältnis zwischen der Anzahl der geänderten Zeilen und der Gesamtzahl von Zeilen in der Tabelle, wie stark die Abweichung in den indizierten Daten der Tabelle ist und wie stark sich die Daten vor und nach der Änderung unterscheiden.

Mit dem resourceName-Parameter geben Sie an, ob der Vorgang für die Indizes aller verknüpften Datenbanken, einer bestimmten Datenbank oder einer bestimmten Tabelle ausgeführt werden soll.

Durch jeden Aufruf dieser Methode werden die zuvor erstellten statistischen Daten gelöscht und für die im Parameter resourceName angegebene Datenbank oder Tabelle neu erstellt (oder alle Tabellen in allen verbundenen Datenbanken, wenn resourceName den Wert null) aufweist. Diese Methode kann jederzeit aufgerufen werden, während eine Verbindung zur Datenbank besteht. Der analyze()-Vorgang und die daraus resultierenden statistischen Daten sind nicht in einer Transaktion enthalten. Es empfiehlt sich jedoch nicht, analyze() aufzurufen, wenn in der Datenbank eine Transaktion ausgeführt wird (die inTransaction-Eigenschaft den Wert trueaufweist). Daten, ein Tabellenschema oder Indexänderungen, die zwar in der Transaktion ausgeführt aber noch nicht angewendet wurden, werden bei einem Aufruf von analyze() nicht erfasst, d. h. die aus dem Aufruf von analyze() resultierenden Daten sind veraltet, sobald die Transaktion angewendet wird.

Sie können die mit der Methode analyze() erstellten statistischen Daten mit der Methode deanalyze() entfernen.

deanalyze()analyzeflash.events:SQLEventWird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde. Wird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde.errorflash.events:SQLErrorEventWird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt. Wird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt.
attach Fügt der „SQLConnection“-Instanz unter dem angegenenen Namen eine neue Datenbank hinzu.Wenn der name-Paramenter ein leerer String ("") oder null ist. ArgumentErrorArgumentErrorWenn es sich bei dem für den Parameter reference angegebenen Wert nicht um eine flash.filesystem.File-Instanz handelt ArgumentErrorArgumentErrorWenn das encryptionKey-Argument nicht null ist und seine length nicht 16 Byte beträgt ArgumentErrorArgumentErrorWenn der reference-Parameter null und das encryptionKey-Argument nicht null ist ArgumentErrorArgumentErrorWenn die SQLConnection-Instanz nicht mit einer Datenbank verbunden ist (die connected-Eigenschaft hat den Wert false), oder wenn aktuell eine Transaktion geöffnet ist (die inTransaction-Eigenschaft hat den Wert true). IllegalOperationErrorflash.errors:IllegalOperationErrorwenn der Vorgang im synchronen Ausführungsmodus fehlschlägt. SQLErrorflash.errors:SQLErrornameStringDer Name, mit dem die neu verbundene Datenbank bezeichnet wird. Mit diesem Namen können Sie in SQL-Anweisungen ausdrücklich darauf hinweisen, dass eine Tabelle zu einer bestimmten Datenbank gehört, wenn Sie den Namen im Format [datenbankname].[tabellenname] angeben. Die Namen „main“ und „temp“ sind reserviert und sind nicht verfügbar. referenceObjectnullEin Verweis auf die zu verknüpfende Datenbankdatei (eine „flash.filesystem.File“-Instanz). Wenn auf eine nicht existierende Datei verwiesen wird, wird entweder eine neue Datenbankdatei erstellt oder ein Fehler ausgelöst. Das hängt von dem Wert ab, der für den Parameter openMode im Aufruf von open() oder openAsync() angegeben wurde, mit dem die Verbindung zur Hauptdatenbank hergestellt wurde.

Weist der Parameter den Wert null auf, wird eine Datenbank im Speicher erstellt und verknüpft.

responderflash.net:RespondernullEin Objekt, das die Methoden angibt, die im Anschluss an einen erfolgreich abgeschlossenen oder fehlgeschlagenen Vorgang aufgerufen werden. Wenn im asynchronen Ausführungsmodus das Argument responder den Wert null aufweist, wird bei Abschluss der Ausführung ein attach- oder error-Ereignis ausgelöst. encryptionKeyflash.utils:ByteArraynullDer Schlüssel für die Verschlüsselung der Datenbankdatei. Wenn durch das Aufrufen von attach() eine Datenbank erstellt wird, wird diese mithilfe des festgelegten Schlüssels verschlüsselt. Wenn durch das Aufrufen eine bestehende verschlüsselte Datenbank verknüpft wird, muss der Wert dem Schlüssel der Datenbank entsprechen; andernfalls tritt ein Fehler auf. Wenn die zu verknüpfende Datenbank nicht verschlüsselt ist oder eine unverschlüsselte Datenbank erstellt werden soll, muss der Wert der Standardwert null sein.

Ein gültiger Verschlüsselungsschlüssel hat eine Länge von 16 Byte. Eine im Speicher abgelegte Datenbank kann nicht verschlüsselt werden. Deshalb muss dieser Parameter null sein, wenn der reference-Parameter null ist.

Entspricht beim Verknüpfen einer verschlüsselten Datenbank der Verschlüsselungsschlüssel nicht jenem der Datenbank, so tritt ein Ausnahmefehler auf. Im synchronen Ausführungsmodus wird ein SQLError-Ausnahmefehler ausgegeben. Im asynchronen Ausführungsmodus wird ein SQLErrorEvent ausgelöst, wobei die error-Eigenschaft des Ereignisobjekts eine SQLError-Instanz enthält. In beiden Fällen lautet die errorID-Eigenschaft des SQLError-Objekts „3138“ (Geöffnete Datei ist keine Datenbankdatei).

Der encryptionKey-Parameter ist ab AIR 1.5 verfügbar.

Fügt der „SQLConnection“-Instanz unter dem angegenenen Namen eine neue Datenbank hinzu. Nachdem eine Datenbank verknüpft wurde, können Sie sie in SQL-Anweisungen verwenden, die an dieser „SQLConnection“-Instanz ausgeführt werden.

Wenn bereits eine Datenbank mit dem angegebenen Namen verknüpft wurde, wird durch das Aufrufen von attach() ein Fehler ausgelöst. Sie können dieselbe Datenbank jedoch mehrfach mithilfe von eindeutigen Namen verknüpfen. Mit einer „SQLConnection“-Instanz können bis zu zehn Datenbanken verknüpft werden.

Jede SQL-Anweisung kann auf einer verknüpften Datenbank ausgeführt werden, und zwar mithilfe von attach(), das auf der Hauptdatenbank ausgeführt werden kann (die Datenbank, die mithilfe von open() oder openAsync() verknüpft wurde). Eine SQL-Anweisung kann auf Tabellen in allen Datenbanken zugreifen, die mit der der Anweisung zugeordneten „SQLConnection“-Instanz verknüpft sind, einschließlich dem Zugreifen auf Tabellen in mehreren Datenbanken von einer Anweisung aus. Wenn zur Laufzeit Tabellennamen in einer Anweisung aufgelöst werden, werden die Datenbanken der „SQLConnection“-Instanz in der Reihenfolge ihrer Verknüpfung durchsucht, und zwar beginnend mit der Datenbank, die mithilfe der Methode open() oder openAsync() verknüpft wurde. Geben Sie in der Anweisung den Datenbanknamen an (wie in der Methode attach() im Parameter name angegeben), um einen Tabellennamen explizit zu qualifizieren.

Eine mithilfe der Methode attach() verknüpfte Datenbank können Sie mithilfe der Methode detach() entfernen. Durch das Schließen der SQLConnection-Instanz (durch Aufrufen der Methode close()), werden die Verknüpfungen zu allen verknüpften Datenbanken aufgehoben.

Für die verknüpfte Datenbank wird der gleiche Ausführungsmodus (synchron oder asynchron) wie für die Hauptdatenbank verwendet. Ausschlaggebend ist dabei, ob die Hauptdatenbank mithilfe der Methode open() oder openAsync() verknüpft wurde.

open()openAsync()detach()attachflash.events:SQLEventWird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde. Wird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde.errorflash.events:SQLErrorEventWird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt. Wird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt.
begin Startet eine Transaktion, in der alle SQL-Anweisungen, die für die Datenbanken der Verbindung ausgeführt wurden, zusammengefasst sind.Wenn diese Methode aufgerufen wird und die „SQLConnection“-Instanz ist an keine Datenbank angeschlossen, hat die connected-Eigenschaft den Wert false. IllegalOperationErrorflash.errors:IllegalOperationErrorWenn es sich bei der angegebenen Option um keine der SQLTransactionLockType-Konstanten handelt. ArgumentErrorArgumentErrorwenn der Vorgang im synchronen Ausführungsmodus fehlschlägt. SQLErrorflash.errors:SQLErroroptionStringnullGibt die Sperrstrategie an, die von der Transaktion verwendet wird. Hierbei kann es sich um eine Konstante handeln, die in der „SQLTransactionLockType“-Klasse definiert wurde:
  • SQLTransactionLockType.DEFERRED gibt an, dass eine Sperre erst beim ersten Lese- oder Schreibvorgang erlangt wird.
  • SQLTransactionLockType.EXCLUSIVE gibt an, dass eine Sperre so schnell wie möglich erlangt wird, und keine andere „SQLConnection“-Instanz in der Datenbank lesen oder schreiben kann.
  • SQLTransactionLockType.IMMEDIATE gibt an, dass eine Sperre so schnell wie möglich erlangt wird, und andere „SQLConnection“-Instanzen zwar in der Datenbank lesen, aber nicht schreiben können.

Der Standardwert (null) entspricht SQLTransactionLockType.DEFERRED.

responderflash.net:RespondernullEin Objekt, das die Methoden angibt, die im Anschluss an einen erfolgreich abgeschlossenen oder fehlgeschlagenen Vorgang aufgerufen werden. Wenn im asynchronen Ausführungsmodus das Argument responder den Wert null aufweist, wird bei Abschluss der Ausführung ein begin- oder error-Ereignis ausgelöst.
Startet eine Transaktion, in der alle SQL-Anweisungen, die für die Datenbanken der Verbindung ausgeführt wurden, zusammengefasst sind.

Standardmäßig wird jede SQL-Anweisung in einer separaten Transaktion ausgeführt, und die Transaktion ist beendet, wenn die Ausführung der Anweisung erfolgreich beendet wird oder fehlschlägt. Mithilfe der Methode begin() wird eine neue, manuelle Transaktion erstellt. Ab diesem Zeitpunkt erfolgt die Ausführung aller SQL-Anweisungen an der „SQLConnection“-Instanz innerhalb der Transaktion, und alle durch die Anweisung vorgenommenen Aktionen und Änderungen können als eine Gruppe übergeben (dauerhaft gemacht) oder rückgängig gemacht werden.

Beenden Sie eine Transaktion durch Aufrufen der commit()- oder rollback()-Methode, abhängig davon, ob die durch die Anweisungen der Transaktion vorgenommenen Änderungen dauerhaft gemacht oder verworfen werden sollen.

Verschachtelte Aufrufe von begin() werden ignoriert. Sie können Speicherpunkte erstellen, die eine Art Lesezeichen innerhalb einer Transaktion sind, indem Sie die setSavepoint()-Methode aufrufen. SQL-Anweisungen lassen sich dann anwenden oder zurücknehmen, indem Sie die releaseSavepoint()-Methode oder die rollbackToSavepoint()-Methode aufrufen. Wenn eine Transaktion jedoch durch einen Aufruf von begin() gestartet wurde, werden Änderungen erst dann dauerhaft von der Datenbank übernommen, wenn die commit()-Methode aufgerufen wird.

Wird die Datenbankverbindung geschlossen, während eine Transaktion geöffnet ist, macht AIR die Transaktion automatisch rückgängig. (Hinweis: Bei AIR 1.1 und niedrigeren Versionen werden offene Transaktionen beim Schließen einer Verbindung automatisch festgeschrieben.)

Eine Transaktion ist nicht auf Anweisungsausführungen in einer Datenbank beschränkt; sondern es können auch Anweisungen an verschiedenen verknüpften Datenbanken ausgeführt werden.

Im folgenden Beispiel wird das Ausführen mehrerer SWL-INSERT-Anweisungen innerhalb einer Transaktion gezeigt. Zunächst wird der Tabelle „employees“ (Mitarbeiter) eine Zeile hinzugefügt. Als Nächstes wird der primäre Schlüssel der neu eingefügten Zeile abgerufen und verwendet, um der verknüpften Tabelle „phoneNumbers“ eine Zeile hinzuzufügen. package { import flash.data.SQLConnection; import flash.data.SQLResult; import flash.data.SQLStatement; import flash.display.Sprite; import flash.events.SQLErrorEvent; import flash.events.SQLEvent; import flash.filesystem.File; public class MultiInsertTransactionExample extends Sprite { private var conn:SQLConnection; private var insertEmployee:SQLStatement; private var insertPhoneNumber:SQLStatement; public function MultiInsertTransactionExample():void { // define where to find the database file var appStorage:File = File.applicationStorageDirectory; var dbFile:File = appStorage.resolvePath("ExampleDatabase.db"); // open the database connection conn = new SQLConnection(); conn.addEventListener(SQLErrorEvent.ERROR, errorHandler); conn.addEventListener(SQLEvent.OPEN, openHandler); conn.openAsync(dbFile); } // Called when the database is connected private function openHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.OPEN, openHandler); // start a transaction conn.addEventListener(SQLEvent.BEGIN, beginHandler); conn.begin(); } // Called when the transaction begins private function beginHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.BEGIN, beginHandler); // create and execute the first SQL statement: // insert an employee record insertEmployee = new SQLStatement(); insertEmployee.sqlConnection = conn; insertEmployee.text = "INSERT INTO employees (lastName, firstName, email) " + "VALUES (:lastName, :firstName, :email, :birthday)"; insertEmployee.parameters[":lastName"] = "Smith"; insertEmployee.parameters[":firstName"] = "Bob"; insertEmployee.parameters[":email"] = "bsmith@example.com"; insertEmployee.parameters[":birthday"] = new Date(1971, 8, 12); insertEmployee.addEventListener(SQLEvent.RESULT, insertEmployeeHandler); insertEmployee.addEventListener(SQLErrorEvent.ERROR, errorHandler); insertEmployee.execute(); } // Called after the employee record is inserted private function insertEmployeeHandler(event:SQLEvent):void { insertEmployee.removeEventListener(SQLEvent.RESULT, insertEmployeeHandler); insertEmployee.removeEventListener(SQLErrorEvent.ERROR, errorHandler); // Get the employee id of the newly created employee row var result:SQLResult = insertEmployee.getResult(); var employeeId:Number = result.lastInsertRowID; // Add a phone number to the related phoneNumbers table insertPhoneNumber = new SQLStatement(); insertPhoneNumber.sqlConnection = conn; insertPhoneNumber.text = "INSERT INTO phoneNumbers (employeeId, type, number) " + "VALUES (:employeeId, :type, :number)"; insertPhoneNumber.parameters[":employeeId"] = employeeId; insertPhoneNumber.parameters[":type"] = "Home"; insertPhoneNumber.parameters[":number"] = "(555) 555-1234"; insertPhoneNumber.addEventListener(SQLEvent.RESULT, insertPhoneNumberHandler); insertPhoneNumber.addEventListener(SQLErrorEvent.ERROR, errorHandler); insertPhoneNumber.execute(); } // Called after the phone number record is inserted private function insertPhoneNumberHandler(event:SQLEvent):void { insertPhoneNumber.removeEventListener(SQLEvent.RESULT, insertPhoneNumberHandler); insertPhoneNumber.removeEventListener(SQLErrorEvent.ERROR, errorHandler); // No errors so far, so commit the transaction conn.addEventListener(SQLEvent.COMMIT, commitHandler); conn.commit(); } // Called after the transaction is committed private function commitHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.COMMIT, commitHandler); trace("Transaction complete"); } // Called whenever an error occurs private function errorHandler(event:SQLErrorEvent):void { // If a transaction is happening, roll it back if (conn.inTransaction) { conn.addEventListener(SQLEvent.ROLLBACK, rollbackHandler); conn.rollback(); } trace(event.error.message); trace(event.error.details); } // Called when the transaction is rolled back private function rollbackHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.ROLLBACK, rollbackHandler); // add additional error handling, close the database, etc. } } } Im folgenden Beispiel wird das Ausführen mehrerer SWL-DELETE-Anweisungen innerhalb einer Transaktion gezeigt. Die Transaktion wird verwendet, um einen Mitarbeiterdatensatz zu löschen. Zunächst werden die entsprechenden Zeilen in der Spalte „phoneNumbers“ gelöscht. Als Nächstes wird die Zeile mit dem Mitarbeiterdatensatz aus der Tabelle „employees“ gelöscht. package { import flash.data.SQLConnection; import flash.data.SQLResult; import flash.data.SQLStatement; import flash.display.Sprite; import flash.events.SQLErrorEvent; import flash.events.SQLEvent; import flash.filesystem.File; public class MultiDeleteTransactionExample extends Sprite { private var conn:SQLConnection; private var deleteEmployee:SQLStatement; private var deletePhoneNumbers:SQLStatement; private var employeeIdToDelete:Number = 25; public function MultiDeleteTransactionExample():void { // define where to find the database file var appStorage:File = File.applicationStorageDirectory; var dbFile:File = appStorage.resolvePath("ExampleDatabase.db"); // open the database connection conn = new SQLConnection(); conn.addEventListener(SQLErrorEvent.ERROR, errorHandler); conn.addEventListener(SQLEvent.OPEN, openHandler); conn.openAsync(dbFile); } // Called when the database is connected private function openHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.OPEN, openHandler); // start a transaction conn.addEventListener(SQLEvent.BEGIN, beginHandler); conn.begin(); } // Called when the transaction begins private function beginHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.BEGIN, beginHandler); // Create and execute the first SQL statement: // Delete an employee's phone number records deletePhoneNumbers = new SQLStatement(); deletePhoneNumbers.sqlConnection = conn; deletePhoneNumbers.text = "DELETE FROM phoneNumbers " + "WHERE employeeId = :employeeId"; deletePhoneNumbers.parameters[":employeeId"] = employeeIdToDelete; deletePhoneNumbers.addEventListener(SQLEvent.RESULT, deletePhoneNumbersHandler); deletePhoneNumbers.addEventListener(SQLErrorEvent.ERROR, errorHandler); deletePhoneNumbers.execute(); } // Called after the phone number records are deleted private function deletePhoneNumbersHandler(event:SQLEvent):void { deletePhoneNumbers.removeEventListener(SQLEvent.RESULT, deletePhoneNumbersHandler); deletePhoneNumbers.removeEventListener(SQLErrorEvent.ERROR, errorHandler); deleteEmployee = new SQLStatement(); deleteEmployee.sqlConnection = conn; deleteEmployee.text = "DELETE FROM employees " + "WHERE employeeId = :employeeId"; deleteEmployee.parameters[":employeeId"] = employeeIdToDelete; deleteEmployee.addEventListener(SQLEvent.RESULT, deleteEmployeeHandler); deleteEmployee.addEventListener(SQLErrorEvent.ERROR, errorHandler); deleteEmployee.execute(); } // Called after the employee record is deleted private function deleteEmployeeHandler(event:SQLEvent):void { deleteEmployee.removeEventListener(SQLEvent.RESULT, deleteEmployeeHandler); deleteEmployee.removeEventListener(SQLErrorEvent.ERROR, errorHandler); // No errors so far, so commit the transaction conn.addEventListener(SQLEvent.COMMIT, commitHandler); conn.commit(); } // Called after the transaction is committed private function commitHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.COMMIT, commitHandler); trace("Transaction complete"); } // Called whenever an error occurs private function errorHandler(event:SQLErrorEvent):void { // If a transaction is happening, roll it back if (conn.inTransaction) { conn.addEventListener(SQLEvent.ROLLBACK, rollbackHandler); conn.rollback(); } trace(event.error.message); trace(event.error.details); } // Called when the transaction is rolled back private function rollbackHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.ROLLBACK, rollbackHandler); // add additional error handling, close the database, etc. } } }
commit()rollback()setSavepoint()releaseSavepoint()rollbackToSavepoint()flash.data.SQLTransactionLockTypebeginflash.events:SQLEventWird ausgelöst, wenn der Vorgang abgeschlossen wurde. Wird ausgelöst, wenn der Vorgang abgeschlossen wurde.errorflash.events:SQLErrorEventWird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt. Wird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt.
cancel Bricht alle SQL-Anweisungen ab, die aktuell an mit der „SQLConnection“-Instanz verbundenen Datenbanken ausgeführt werden.Wenn diese Methode aufgerufen wird und die „SQLConnection“-Instanz ist an keine Datenbank angeschlossen, hat die connected-Eigenschaft den Wert false. IllegalOperationErrorflash.errors:IllegalOperationErrorWenn der Vorgang im synchronen Ausführungsmodus fehlschlägt. SQLErrorflash.errors:SQLErrorresponderflash.net:RespondernullEin Objekt, das die Methoden angibt, die im Anschluss an einen erfolgreich abgeschlossenen oder fehlgeschlagenen Vorgang aufgerufen werden. Wenn im asynchronen Ausführungsmodus das Argument responder den Wert null aufweist, wird bei Abschluss der Ausführung ein cancel- oder error-Ereignis ausgelöst. Bricht alle SQL-Anweisungen ab, die aktuell an mit der „SQLConnection“-Instanz verbundenen Datenbanken ausgeführt werden. Mithilfe dieser Methode können Sie langfristige oder außer Kontrolle geratene Abfragen stoppen.

Werden beim Aufrufen der cancel()-Methode gerade Anweisungen ausgeführt, werden diese Vorgänge abgebrochen und alle unvollständigen Aktualisierungen oder Transaktionen werden rückgängig gemacht. Wenn aktuell keine Anweisungen ausgeführt werden, geschieht mit Ausnahme der Rückgängigmachung einer offenen Transaktion nichts.

flash.data.SQLStatementcancelflash.events:SQLEventWird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde. Wird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde.errorflash.events:SQLErrorEventWird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt. Wird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt.
close Schließt die aktuelle Datenbankverbindung.Wenn der Vorgang im synchronen Ausführungsmodus fehlschlägt. SQLErrorflash.errors:SQLErrorresponderflash.net:RespondernullEin Objekt, das die Methoden angibt, die im Anschluss an einen erfolgreich abgeschlossenen oder fehlgeschlagenen Vorgang aufgerufen werden. Wenn im asynchronen Ausführungsmodus das Argument responder den Wert null aufweist, wird bei Abschluss der Ausführung ein close- oder error-Ereignis ausgelöst. Schließt die aktuelle Datenbankverbindung. Die Verbindung zu allen verknüpften Datenbanken werden ebenfalls unterbrochen.

Wenn es beim Aufrufen von close() eine offene Transaktion gibt, wird die Transaktion zurückgenommen. Wenn eine SQLConnection-Instanz durch einen Garbagekollektor entfernt wird, wird zur Laufzeit automatisch close() aufgerufen, auch wenn eine AIR-Anwendung geschlossen wird, während eine SQLConnection noch mit einer Datenbank verbunden ist.

closeflash.events:SQLEventWird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde. Wird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde.errorflash.events:SQLErrorEventWird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt. Wird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt.
commit Übergibt eine vorhandene Transaktion, wodurch alle durch die Transaktionsanweisungen ausgeführten Aktionen dauerhaft auf die Datenbank angewendet werden.Wenn die Methode aufgerufen wird, während die SQLConnection-Instanz nicht mit einer Datenbank verbunden ist (die connected-Eigenschaft weist den Wert false auf) oder wenn aktuell keine Transaktion offen ist (die inTransaction-Eigenschaft weist den Wert false auf). IllegalOperationErrorflash.errors:IllegalOperationErrorresponderflash.net:RespondernullEin Objekt, das die Methoden angibt, die im Anschluss an einen erfolgreich abgeschlossenen oder fehlgeschlagenen Vorgang aufgerufen werden. Wenn im asynchronen Ausführungsmodus das Argument responder den Wert null aufweist, wird bei Abschluss der Ausführung ein commit- oder error-Ereignis ausgelöst. Übergibt eine vorhandene Transaktion, wodurch alle durch die Transaktionsanweisungen ausgeführten Aktionen dauerhaft auf die Datenbank angewendet werden.

Dazwischenliegende Speicherpunkte, die als eine Art Lesezeichen innerhalb einer Transaktion fungieren, lassen sich durch einen Aufruf der setSavepoint()-Methode erstellen. Durch das Verwenden von Speicherpunkten können Sie Teile einer Transaktion übernehmen, indem Sie die releaseSavepoint()-Methode aufrufen, oder Teile einer Transaktion zurücknehmen, indem Sie die rollbackToSavepoint()-Methode aufrufen. Wenn eine Transaktion jedoch mit der begin()-Methode geöffnet wurde, werden Änderungen nicht dauerhaft in der Datenbank gespeichert, bis die gesamte Transaktion durch einen Aufruf der commit()-Methode übernommen werden.

Für eine Transaktion, die Speicherpunkte verwendet, werden alle Änderungen, die mithilfe der rollbackToSavepoint()-Methode zurückgenommen werden, nicht übernommen, wenn die gesamte Transaktion übernommen wird. Anweisungen, die mit releaseSavepoint() übermittelt wurden oder deren Speicherpunkte nicht übermittelt oder zurückgenommen wurden, werden von der Datenbank übernommen.

begin()rollback()setSavepoint()releaseSavepoint()rollbackToSavepoint()commitflash.events:SQLEventWird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde. Wird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde.errorflash.events:SQLErrorEventWird ausgelöst, wenn der Vorgang mit einem Fehlschlag abgeschlossen wurde. Wird ausgelöst, wenn der Vorgang mit einem Fehlschlag abgeschlossen wurde.
compact Gewinnt sämtlichen unbenutzten Platz in der Datenbank zurück.Wenn die Methode aufgerufen wird, während die SQLConnection-Instanz nicht mit einer Datenbank verbunden ist (die connected-Eigenschaft weist den Wert false auf) oder wenn aktuell eine Transaktion ausgeführt wird (die inTransaction-Eigenschaft weist den Wert true auf). IllegalOperationErrorflash.errors:IllegalOperationErrorWenn der Vorgang im synchronen Ausführungsmodus fehlschlägt. SQLErrorflash.errors:SQLErrorresponderflash.net:RespondernullEin Objekt, das die Methoden angibt, die im Anschluss an einen erfolgreich abgeschlossenen oder fehlgeschlagenen Vorgang aufgerufen werden. Wenn im asynchronen Ausführungsmodus das Argument responder den Wert null aufweist, wird bei Abschluss der Ausführung ein compact- oder error-Ereignis ausgelöst. Gewinnt sämtlichen unbenutzten Platz in der Datenbank zurück. Wenn ein Objekt (Tabelle, Indexposition oder Auslöser) aus der Datenbank entfernt wird, bleibt ein leerer Platz zurück. Dadurch wird die Datenbank unnötig größer, aber andererseits können INSERT-Vorgänge schneller ausgeführt werden. Allmählich wird die Struktur der Datenbankdatei durch INSERT- und DELETE-Vorgänge fragmentiert, wodurch der Zugriff auf den Datenbankinhalt verlangsamt wird. Mithilfe dieser Methode wird die Datenbankdatei verdichtet, leere Seiten werden eliminiert, Tabellendaten werden ausgerichtet, sodass sie zusammenhängend sind und die Struktur der Datenbankdatei wird bereinigt.

An einer verknüpften Datenbankdatei kann der Vorgang compact() nicht ausgeführt werden; er kann nur an der ursprünglichen oder Hauptdatenbankdatei, die mithilfe der „SQLConnection“-Instanz geöffnet wurde, ausgeführt werden. Wenn eine Transaktion aktiv ist, schlägt dieser Vorgang fehl und hat keine Auswirkung auf eine Datenbank im Speicher.

compactflash.events:SQLEventWird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde. Wird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde.errorflash.events:SQLErrorEventWird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt. Wird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt.
deanalyze Entfernt alle statistischen Daten, die durch einen Aufruf der Methode „analyze()“ erstellt wurden.Wenn diese Methode aufgerufen wird und die „SQLConnection“-Instanz ist an keine Datenbank angeschlossen, hat die connected-Eigenschaft den Wert false. IllegalOperationErrorflash.errors:IllegalOperationErrorWenn der Vorgang im synchronen Ausführungsmodus fehlschlägt. SQLErrorflash.errors:SQLErrorresponderflash.net:RespondernullEin Objekt, das die Methoden angibt, die im Anschluss an einen erfolgreich abgeschlossenen oder fehlgeschlagenen Vorgang aufgerufen werden. Wenn im asynchronen Ausführungsmodus das Argument responder den Wert null aufweist, wird bei Abschluss der Ausführung ein deanalyze- oder error-Ereignis ausgelöst. Entfernt alle statistischen Daten, die durch einen Aufruf der Methode analyze() erstellt wurden.

Da die durch die Methode analyze() erzeugten statistischen Daten in der Datenbank Platz einnehmen, können Sie durch Aufrufen von deanalyze() Platz zurückgewinnen, der z. B. nach dem Entfernen von Indizes oder Tabellen frei geworden ist.

Dieser Vorgang ist in einer aktiven Transaktion nicht eingeschlossen.

analyze()deanalyzeflash.events:SQLEventWird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde. Wird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde.errorflash.events:SQLErrorEventWird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt. Wird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt.
detach Unterbricht die Verknüpfung einer zusätzlichen Datenbank, die zuvor mithilfe der Methode „attach()“ mit der „SQLConnection“-Instanz verknüpft wurde.Wenn das name-Argument den Wert null aufweist oder einen leeren String ("") enthält. ArgumentErrorArgumentErrorWenn diese Methode aufgerufen wird, während die „SQLConnection“-Instanz nicht mit einer Datenbank verbunden ist (die connected-Eigenschaft weist den Wert false auf) oder wenn die „SQLConnection“-Instanz eine offene Transaktion aufweist (die inTransaction-Eigenschaft weist den Wert true auf). IllegalOperationErrorflash.errors:IllegalOperationErrorWenn der Vorgang im synchronen Ausführungsmodus fehlschlägt. SQLErrorflash.errors:SQLErrornameStringDer Name der Datenbank, deren Verbindung unterbrochen werden soll. responderflash.net:RespondernullEin Objekt, das die Methoden angibt, die im Anschluss an einen erfolgreich abgeschlossenen oder fehlgeschlagenen Vorgang aufgerufen werden. Wenn im asynchronen Ausführungsmodus das Argument responder den Wert null aufweist, wird bei Abschluss der Ausführung ein detach- oder error-Ereignis ausgelöst. Unterbricht die Verknüpfung einer zusätzlichen Datenbank, die zuvor mithilfe der Methode attach() mit der „SQLConnection“-Instanz verknüpft wurde. Sie können eine Datenbank mehrfach unter verschiedenen Namen verknüpfen. Bei der Trennung einer Verbindung bleiben die anderen Verbindungen intakt. Die Verbindung zu einer Datenbank kann nicht unterbrochen werden, wenn eine offene Transaktion vorliegt (die inTransaction-Eigenschaft weist den Wert true auf). attach()detachflash.events:SQLEventWird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde. Wird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde.errorflash.events:SQLErrorEventWird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt. Wird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt.getSchemaResult Bietet Zugriff auf das Ergebnis, das sich aus einem Aufruf der Methode „loadSchema()“ ergibt. flash.data:SQLSchemaResult Bietet Zugriff auf das Ergebnis, das sich aus einem Aufruf der Methode loadSchema() ergibt. Mit der Methode getSchemaResult() werden die ältesten Ergebnisse in der Warteschlange zuerst verarbeitet. Jedes Mal, wenn das Aufrufen der loadSchema()-Methode abgeschlossen wird (jedes Mal, wenn im asynchronen Ausführungsmodus das schema-Ereignis ausgelöst wird), wird der Warteschlange ein neues SQLSchemaResult-Objekt hinzugefügt. Bei jedem Aufrufen der Methode getSchemaResult() wird das älteste Ergebnis (das Ergebnis, das der Warteschlange als erstes hinzugefügt wurde) zurückgegeben und aus der Warteschlange entfernt. Wenn die Warteschlange keine weiteren Objekte mehr enthält, gibt getSchemaResult() den Wert null zurück.

Ist die Datenbankverbindung geschlossen, gibt die Methode den Wert null zurück.

loadSchema()schema Ereignis
loadSchema Lädt Schemainformationen von der verbundenen Datenbank oder einer verknüpften Datenbank.Wenn diese Methode aufgerufen wird und die SQLConnection-Instanz an keine Datenbank angeschlossen ist (die Eigenschaft connected hat den Wert false). IllegalOperationErrorflash.errors:IllegalOperationErrorWenn der angegebene Wert für das Argument type keiner der zulässigen Typen ist. ArgumentErrorArgumentErrorWenn im synchronen Ausführungsmodus ein ungültiger Wert für die Parameter „name“ oder „database“ angegeben wird. SQLErrorflash.errors:SQLErrortypeClassnullGibt den Typ des zu ladenden Schemas an. Der Wert null (der Standard) gibt an, dass alle Schemainformationen geladen werden sollen. Durch die Eingabe eines anderes Wertes als null für diesen Parameter engen Sie den Umfang des resultierenden Schemas ein, potenziell unnötige Informationen werden aus dem Ergebnis entfernt und der Vorgang wird effizienter. Bei dem Wert muss es sich um den Klassennamen einer der folgenden Klassen handeln:
  • SQLIndexSchema
  • SQLTableSchema
  • SQLTriggerSchema
  • SQLViewSchema
nameStringnullZeigt an, welches Ressourcenschema geladen ist. Wie dieser Wert verwendet wird, hängt vom angegebenen type-Argument ab. In der Regel handelt es sich dabei um den Namen eines Datenbankobjekts, wie etwa einem Tabellen-, Index- oder Ansichtsnamen. Wenn Sie einen Wert angeben, werden nur Schemainformationen für das Datenbankobjekt mit dem angegebenen Namen in die Ergebnisse aufgenommen.

Ist der angegebene Wert ungültig, wird ein error-Ereignis ausgelöst (im synchronen Ausführungsmodus wird ein Fehler ausgegeben). Der Wert des Parameters type ist nur gültig, wenn er dem Typ des genannten Objekts entspricht (siehe Beschreibung der Methode).

Weist das Argument name den Wert null auf, dann werden alle Schemata des angegebenen Typs eingeschlossen. Wenn der angegebene Wert ungültig ist, wird ein error-Ereignis ausgelöst.

databaseStringmainDer Name der Datenbank, deren Schema geladen wird. Wenn der angegebene Wert ungültig ist, wird ein error-Ereignis ausgelöst. includeColumnSchemaBooleantrueGibt an, ob das Ergebnis Schemainformationen für die Spalten von Tabellen und Ansichten enthält. responderflash.net:RespondernullEin Objekt, das die Methoden angibt, die im Anschluss an einen erfolgreich abgeschlossenen oder fehlgeschlagenen Vorgang aufgerufen werden. Wenn im asynchronen Ausführungsmodus das Argument responder den Wert null aufweist, wird bei Abschluss der Ausführung ein schema- oder error-Ereignis ausgelöst.
Lädt Schemainformationen von der verbundenen Datenbank oder einer verknüpften Datenbank. Das Schema gibt die Struktur der Tabellen, Spalten, Indizes und Auslöser in der Datenbank an.

Der Zugriff auf das geladene Schema erfolgt mithhilfe der Methode SQLConnection.getSchemaResult().

Im asynchronen Ausführungsmodus wird bei einem erfolgreichen Abschluss des Vorgangs ein schema-Ereignis ausgelöst. Schlägt der Vorgang fehl, wird ein error-Ereignis ausgelöst.

Mit der Kombination aus den Werten der Parameter type und name bestimmen Sie, welcher Typ von Schemadaten mithilfe der loadSchema()-Methode erzeugt wird, und folglich bestimmen Sie damit auch die Werte der Eigenschaften der erzeugten SQLSchemaResult-Instanz. Die folgende Tabelle gibt die gültigen Paare aus type und name sowie die damit erzeugten Schemadaten an:

Argument typeArgument nameRuft Schemadaten ab für: „null“„null“alle Objekte in der Datenbank (alle Tabellen, Ansichten, Auslöser und Indizes)SQLIndexSchema„null“alle Indizes in der DatenbankSQLIndexSchemagültiger Tabellennamealle in der angegebenen Tabelle definierten IndizesSQLIndexSchemagültiger Indexnameder angegebene IndexSQLTableSchema„null“alle Tabellen in der DatenbankSQLTableSchemagültiger Tabellennamedie angegebene TabelleSQLTriggerSchema„null“alle Auslöser in der DatenbankSQLTriggerSchemagültiger Tabellennamealle der angegebenen Tabelle zugeordneten AuslöserSQLTriggerSchemagültiger Ansichtsnamealle der angegebenen Ansicht zugeordneten Auslöser SQLTriggerSchemagültiger Auslösernameder angegebene Auslöser SQLViewSchema„null“alle Ansichten in der DatenbankSQLViewSchemagültiger Ansichtsnamedie angegebene Ansicht

Entspricht die Kombination aus type- und name-Argumenten keiner der angegebenen Kombinationen, wird im asynchronen Ausführungsmodus ein error-Ereignis bzw. im synchronen Ausführungsmodus eine Ausnahme ausgelöst. Beispiel: Das Argument type weist den Wert SQLViewSchema und das Argument name weist als Wert den Name einer Tabelle (nicht den Namen einer Ansicht) auf. Die daraufhin ausgelöste Fehlermeldung gibt an, dass die Datenbank kein Objekt des angegebenen Typs mit dem angegebenen Namen enthält.

Ist die Datenbank leer (enthält keine Tabellen, Ansichten, Auslöser oder Indizes), tritt beim Aufrufen der loadSchema()-Methode ein Fehler auf.

getSchemaResult()schema Ereignisflash.data.SQLIndexSchemaflash.data.SQLTableSchemaflash.data.SQLTriggerSchemaflash.data.SQLViewSchemaschemaflash.events:SQLEventWird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde. Wird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde.errorflash.events:SQLErrorEventWird ausgelöst, wenn der Vorgang mit einem Fehlschlag abgeschlossen wurde. Wird ausgelöst, wenn der Vorgang mit einem Fehlschlag abgeschlossen wurde.
openAsync Öffnet eine asynchrone Verbindung zu der Datenbankdatei am angegebenen Speicherort im Dateisystem oder erstellt und öffnet eine neue Datenbankdatei an diesem Speicherort oder öffnet eine Datenbank aus dem Arbeitsspeicher.Wenn die „SQLConnection“-Instanz bereits über eine offene Verbindung zu einer Datenbank verfügt (die Eigenschaft connected weist den Wert true auf). IllegalOperationErrorflash.errors:IllegalOperationErrorWenn es sich bei dem für den Parameter reference angegebenen Wert nicht um eine flash.filesystem.File-Instanz handelt ArgumentErrorArgumentErrorWenn das encryptionKey-Argument nicht null ist und seine length nicht 16 Byte beträgt ArgumentErrorArgumentErrorWenn der reference-Parameter null und das encryptionKey-Argument nicht null ist ArgumentErrorArgumentErrorWenn ein ungültiger pageSize-Parameter angegeben wurde. Dies gilt auch für das Übergeben einer Seitengröße im Modus SQLMode.READ. ArgumentErrorArgumentErrorreferenceObjectnullDer Speicherort der Datenbankdatei, die geöffnet wird. Bei diesem Wert muss es sich um eine „flash.filesystem.File“-Instanz handeln. Lautet der Wert des Parameter null, dann wird eine im Speicher abgelegte Datenbank erstellt und geöffnet. openModeStringcreateZeigt an, wie die Datenbank geöffnet wird. Bei dem Wert kann es sich um eine beliebige Konstante aus der „SQLMode“-Klasse handeln. Der Standardwert lautet SQLMode.CREATE, womit angegeben wird, dass eine Datenbankdatei erstellt wird, sollte am angegebenen Speicherort keine gefunden werden. Wenn openMode den Wert SQLMode.READ hat und die angegebene Datei nicht existiert, wird ein Fehlerereignis ausgelöst. Dieser Parameter wird ignoriert, wenn der Parameter reference den Wert null aufweist. responderflash.net:RespondernullEin Objekt, das die Methoden angibt, die im Anschluss an einen erfolgreich abgeschlossenen oder fehlgeschlagenen Vorgang aufgerufen werden. Wenn das responder-Argument den Wert null aufweist, wird bei Abschluss der Ausführung ein open- oder error-Ereignis ausgelöst. autoCompactBooleanfalseGibt an, ob unbenutzter Platz in der Datenbank automatisch zurückgewonnen wird. Dieser Parameter ist nur gültig, wenn eine neue Datenbankdatei erstellt wird oder eine Datenbankdatei, in der keine Tabellen erstellt wurden, geöffnet wird. Der durch entfernte Daten eingenommene Platz verbleibt standardmäßig in der Datenbankdatei und wird bei Bedarf wiederverwendet. Wenn Sie diesen Parameter auf true setzen, wird die Datenbank veranlasst, automatisch nicht benutzten Platz zurückzugewinnen. Dies kann sich nachteilig auf die Leistung auswirken, da jedes Mal, wenn Daten in die Datenbank geschrieben werden, zusätzliche Verarbeitungszeit erforderlich ist. Außerdem können die Datenbankdaten im Laufe der Zeit fragmentiert werden. Mithilfe der Methode compact() zwingen Sie die Datenbank, jederzeit nicht benutzten Platz in einer Datenbank zurückzugewinnen und die Datenbankdatei zu defragmentieren.

Dieser Parameter wird ignoriert, wenn der Parameter openMode den Wert SQLMode.READ aufweist.

pageSizeint1024Gibt die Seitengröße (in Byte) der Datenbank an. Dieser Parameter ist nur gültig, wenn eine neue Datenbankdatei erstellt wird oder eine Datenbankdatei, in der keine Tabellen erstellt wurden, geöffnet wird. Der Wert muss eine Zweierpotenz größer oder gleich 512 und kleiner oder gleich 32768 sein. Der Standardwert lautet 1024 Byte. Dieser Wert kann nur vor der Erstellung von Tabellen festgelegt werden. Wurden die Tabellen erstellt und wird dann versucht, diesen Wert zu ändern, tritt ein Fehler auf. encryptionKeyflash.utils:ByteArraynullDer Schlüssel für die Verschlüsselung der Datenbankdatei. Wenn durch das Aufrufen von openAsync() eine Datenbank erstellt wird, wird diese mithilfe des festgelegten Schlüssels verschlüsselt. Wenn durch das Aufrufen eine verschlüsselte Datenbank geöffnet wird, muss der Wert dem Schlüssel der Datenbank entsprechen; andernfalls tritt ein Fehler auf. Wenn die zu öffnende Datenbank nicht verschlüsselt ist, muss der Wert der Standardwert null sein; andernfalls tritt ein Fehler auf.

Ein gültiger Verschlüsselungsschlüssel hat eine Länge von 16 Byte. Eine im Speicher abgelegte Datenbank kann nicht verschlüsselt werden. Deshalb muss dieser Parameter null sein, wenn der reference-Parameter null ist.

Entspricht beim Öffnen einer verschlüsselten Datenbank der Verschlüsselungsschlüssel nicht jenem der Datenbank, so wird ein SQLErrorEvent-Ausnahmefehler ausgelöst. Die error-Eigenschaft des Ereignisobjekts enthält eine SQLError-Instanz. Die errorID-Eigenschaft des SQLError-Objekts lautet „3138“ (Geöffnete Datei ist keine Datenbankdatei)

Der encryptionKey-Parameter ist ab AIR 1.5 verfügbar.

Öffnet eine asynchrone Verbindung zu der Datenbankdatei am angegebenen Speicherort im Dateisystem oder erstellt und öffnet eine neue Datenbankdatei an diesem Speicherort oder öffnet eine Datenbank aus dem Arbeitsspeicher. Wenn die Datenbank mithilfe dieser Methode geöffnet wird, werden das Erstellen und Öffnen der Datenbank sowie andere, mithilfe dieser „SQLConnection“-Instanz ausgeführte Vorgänge asynchron ausgeführt. Dazu gehören auch die Anweisungsausführung und andere Vorgänge, die durch eine dieser „SQLConnection“-Instanz zugewiesene „SQLStatement“-Instanz ausgeführt werden. Um Vorgänge synchron auszuführen, müssen Sie die Datenbankverbindung stattdessen mithilfe der Methode open() öffnen.

Nachdem die Verbindung zu einer Datenbank hergestellt wurde, verwenden Sie eine SQLStatement-Instanz, um SQL-Befehle auszuführen. Vorgänge auf Datenbankebene wie das Starten oder Beenden von Transaktionen, das Laden von Schemainformationen und andere Vorgänge werden unter Verwendung der SQLConnection-Instanz ausgeführt.

Eine Datenbank, zu der die Verbindung mithilfe der Methode openAsync() hergestellt wird, erhält automatisch den Datenbanknamen „main“. Mit diesem Namen können Sie Tabellennamen explizit in SQL-Anweisungen qualifizieren, indem Sie sie im Format [datenbankname].[tabellenname] angeben.

open()close()flash.data.SQLModeopenflash.events:SQLEventWird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde. Wird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde.errorflash.events:SQLErrorEventWird beim Fehlschlagen des Vorgangs ausgelöst. Nach einem fehlgeschlagenen Vorgang wird die Verbindung immer geschlossen. Wird beim Fehlschlagen des Vorgangs ausgelöst.
open Öffnet eine synchrone Verbindung zu der Datenbankdatei am angegebenen Speicherort im Dateisystem oder erstellt und öffnet eine neue Datenbankdatei an diesem Speicherort oder öffnet eine Datenbank aus dem Arbeitsspeicher.Wenn die „SQLConnection“-Instanz bereits über eine offene Verbindung zu einer Datenbank verfügt (die Eigenschaft connected weist den Wert true auf). IllegalOperationErrorflash.errors:IllegalOperationErrorWenn der Vorgang fehlschlägt. Nach einem fehlgeschlagenen Vorgang wird die Verbindung immer geschlossen. SQLErrorflash.errors:SQLErrorWenn es sich bei dem für den Parameter reference angegebenen Wert nicht um eine flash.filesystem.File-Instanz handelt ArgumentErrorArgumentErrorWenn das encryptionKey-Argument nicht null ist und seine length nicht 16 Byte beträgt ArgumentErrorArgumentErrorWenn der reference-Parameter null und das encryptionKey-Argument nicht null ist ArgumentErrorArgumentErrorWenn ein ungültiger pageSize-Parameter angegeben wurde. Dies gilt auch für das Übergeben einer Seitengröße im Modus SQLMode.READ. ArgumentErrorArgumentErrorreferenceObjectnullDer Speicherort der Datenbankdatei, die geöffnet wird. Bei diesem Wert muss es sich um eine „flash.filesystem.File“-Instanz handeln. Lautet der Wert des Parameter null, dann wird eine im Speicher abgelegte Datenbank erstellt und geöffnet. openModeStringcreateZeigt an, wie die Datenbank geöffnet wird. Bei dem Wert kann es sich um eine beliebige Konstante aus der „SQLMode“-Klasse handeln. Der Standardwert lautet SQLMode.CREATE, womit angegeben wird, dass eine Datenbankdatei erstellt wird, sollte am angegebenen Speicherort keine gefunden werden. Wenn openMode den Wert SQLMode.READ hat und die angegebene Datei nicht existiert, tritt ein Fehler auf. Dieser Parameter wird ignoriert, wenn der Parameter reference den Wert null aufweist. autoCompactBooleanfalseGibt an, ob unbenutzter Platz in der Datenbank automatisch zurückgewonnen wird. Dieser Parameter ist nur gültig, wenn eine neue Datenbankdatei erstellt wird oder eine Datenbankdatei, in der keine Tabellen erstellt wurden, geöffnet wird. Der durch entfernte Daten eingenommene Platz verbleibt standardmäßig in der Datenbankdatei und wird bei Bedarf wiederverwendet. Wenn Sie diesen Parameter auf true setzen, wird die Datenbank veranlasst, automatisch nicht benutzten Platz zurückzugewinnen. Dies kann sich nachteilig auf die Leistung auswirken, da jedes Mal, wenn Daten in die Datenbank geschrieben werden, zusätzliche Verarbeitungszeit erforderlich ist. Außerdem können die Datenbankdaten im Laufe der Zeit fragmentiert werden. Sie können jederzeit erzwingen, dass die Datenbank nicht verwendeten Speicherplatz in einer Datenbankdatei freigibt, und die Datenbankdatei mit der compact()-Methode defragmentieren.

Dieser Parameter wird ignoriert, wenn der Parameter openMode den Wert SQLMode.READ aufweist.

pageSizeint1024Gibt die Seitengröße (in Byte) der Datenbank an. Dieser Parameter ist nur gültig, wenn eine neue Datenbankdatei erstellt wird oder eine Datenbankdatei, in der keine Tabellen erstellt wurden, geöffnet wird. Der Wert muss eine Zweierpotenz größer oder gleich 512 und kleiner oder gleich 32768 sein. Der Standardwert lautet 1024 Byte. Dieser Wert kann nur vor der Erstellung von Tabellen festgelegt werden. Wurden die Tabellen erstellt und wird dann versucht, diesen Wert zu ändern, tritt ein Fehler auf. encryptionKeyflash.utils:ByteArraynullDer Schlüssel für die Verschlüsselung der Datenbankdatei. Wenn durch das Aufrufen von open() eine Datenbank erstellt wird, wird diese mithilfe des festgelegten Schlüssels verschlüsselt. Wenn durch das Aufrufen eine verschlüsselte Datenbank geöffnet wird, muss der Wert dem Schlüssel der Datenbank entsprechen; andernfalls tritt ein Fehler auf. Wenn die zu öffnende Datenbank nicht verschlüsselt ist oder eine unverschlüsselte Datenbank erstellt werden soll, muss der Wert der Standardwert null sein; andernfalls tritt ein Fehler auf.

Ein gültiger Verschlüsselungsschlüssel hat eine Länge von 16 Byte. Eine im Speicher abgelegte Datenbank kann nicht verschlüsselt werden. Deshalb muss dieser Parameter null sein, wenn der reference-Parameter null ist.

Entspricht beim Öffnen einer verschlüsselten Datenbank der Verschlüsselungsschlüssel nicht jenem der Datenbank, so wird ein SQLError-Ausnahmefehler ausgegeben. In diesem Fall lautet die errorID-Eigenschaft des SQLError-Objekts „3138“ (Geöffnete Datei ist keine Datenbankdatei).

Der encryptionKey-Parameter ist ab AIR 1.5 verfügbar.

Öffnet eine synchrone Verbindung zu der Datenbankdatei am angegebenen Speicherort im Dateisystem oder erstellt und öffnet eine neue Datenbankdatei an diesem Speicherort oder öffnet eine Datenbank aus dem Arbeitsspeicher. Wenn die Datenbank mithilfe dieser Methode geöffnet wird, werden das Erstellen und Öffnen der Datenbank sowie andere, mithilfe dieser „SQLConnection“-Instanz ausgeführte Vorgänge synchron ausgeführt. Dazu gehören auch die Anweisungsausführung und andere Vorgänge, die durch eine dieser „SQLConnection“-Instanz zugewiesene „SQLStatement“-Instanz ausgeführt werden. Um Vorgänge asynchron auszuführen, müssen Sie die Datenbankverbindung stattdessen mithilfe der Methode openAsync() öffnen.

Nachdem die Verbindung zu einer Datenbank hergestellt wurde, verwenden Sie eine SQLStatement-Instanz, um SQL-Befehle auszuführen. Vorgänge auf Datenbankebene wie das Starten oder Beenden von Transaktionen, das Laden von Schemainformationen und andere Vorgänge werden unter Verwendung der SQLConnection-Instanz ausgeführt.

Eine Datenbank, zu der die Verbindung mithilfe der Methode open() hergestellt wird, erhält automatisch den Datenbanknamen „main“. Mit diesem Namen können Sie Tabellennamen explizit in SQL-Anweisungen qualifizieren, indem Sie sie im Format [datenbankname] angeben.[tabellenname] angeben.

openAsync()close()flash.data.SQLModeopenflash.events:SQLEventWird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde. Wird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde.
reencrypt Ändert den Verschlüsselungsschlüssel einer verschlüsselten Datenbank.Wenn der newEncryptionKey-Wert nicht null ist und seine length nicht 16 Byte beträgt ArgumentErrorArgumentErrorWenn die Verbindung nicht geöffnet ist oder eine Transaktion geöffnet ist. IllegalOperationErrorflash.errors:IllegalOperationErrorWenn der Vorgang im synchronen Ausführungsmodus fehlschlägt. SQLErrorflash.errors:SQLErrornewEncryptionKeyflash.utils:ByteArrayEin ByteArray, das den neuen Verschlüsselungsschlüssel für die Datenbank enthält. Ein gültiger Verschlüsselungsschlüssel hat eine Länge von 16 Byte. responderflash.net:RespondernullEin Objekt, das die Methoden angibt, die im Anschluss an einen erfolgreich abgeschlossenen oder fehlgeschlagenen Vorgang aufgerufen werden. Wenn das responder-Argument den Wert null aufweist, wird bei Abschluss der Ausführung das Ereignis reencrypt oder error ausgelöst. Ändert den Verschlüsselungsschlüssel einer verschlüsselten Datenbank. Diese Methode wirkt sich nur auf den Verschlüsselungsschlüssel der Hauptdatenbank (jene Datenbank, die mithilfe der open()- oder openAsync()-Methode verbunden wurde), aus. reencrypt() kann nur für Datenbanken aufgerufen werden, die bei der Erstellung verschlüsselt wurden. Wurde eine Datenbank verschlüsselt erstellt, so kann die Verschlüsselung nicht mehr aufgehoben werden. Ebenso kann eine unverschlüsselt erstellte Datenbank später nicht verschlüsselt werden.

Der Vorgang der erneuten Verschlüsselung läuft in einer eigenen Transaktion ab. Wenn der Vorgang der erneuten Verschlüsselung unterbrochen wird, macht die Datenbank die Transaktion rückgängig und der Verschlüsselungsschlüssel bleibt unverändert.

open()openAsync()attach()reencryptflash.events:SQLEventWird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde. Wird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde.errorflash.events:SQLErrorEventWird beim Fehlschlagen des Vorgangs ausgelöst. Wird beim Fehlschlagen des Vorgangs ausgelöst.
releaseSavepoint Mit dieser Methode werden die SQL-Vorgänge seit dem letzten Speicherpunkt bzw. seit dem angegebenen Speicherpunkt übernommen.wenn der name-Parameterwert ein leerer String ("") ist. ArgumentErrorArgumentErrorWenn die Methode aufgerufen wird, während die SQLConnection-Instanz nicht mit einer Datenbank verbunden ist (die connected-Eigenschaft weist den Wert false auf) oder wenn aktuell keine Transaktion offen ist (die inTransaction-Eigenschaft weist den Wert false auf). IllegalOperationErrorflash.errors:IllegalOperationErrorWenn der Vorgang im synchronen Ausführungsmodus fehlschlägt. SQLErrorflash.errors:SQLErrornameStringnullString Der Name des Speicherpunkts, ab dem alle SQL-Vorgänge übernommen werden sollen. Wenn kein Wert angegeben wird oder wenn dieser Parameter null ist (die Standardeinstellung) wird der neueste unbenannte Speicherpunkt (erstellt durch einen Aufruf von setSavepoint() ohne name-Wert) verwendet. Der Wert von name kann kein leerer String "") sein. responderflash.net:RespondernullResponder Ein Objekt, das die Methoden angibt, die im Anschluss an einen erfolgreich abgeschlossenen oder fehlgeschlagenen Vorgang aufgerufen werden. Wenn im asynchronen Ausführungsmodus das responder-Argument den Wert null aufweist, wird bei Abschluss der Ausführung ein releaseSavepoint- oder error-Ereignis ausgelöst. Mit dieser Methode werden die SQL-Vorgänge seit dem letzten Speicherpunkt bzw. seit dem angegebenen Speicherpunkt übernommen.

Beachten Sie, dass Änderungen erst dann dauerhaft in der Datenbank gespeichert werden, wenn die gesamte Transaktion übernommen wird. Wenn die Transaktion mit der begin()-Methode gestartet wurde, müssen Sie die commit()-Methode aufrufen, um die gesamte Transaktion zu übernehmen. Wenn die Transaktion durch einen Aufruf von setSavepoint() gestartet wurde, während inTransaction den Wert false hat, können Sie die gesamte Transaktion abschließen, indem Sie entweder die commit()-Methode oder releaseSavepoint() oder rollbackToSavepoint() für den ersten Speicherpunkt der Transaktion aufrufen.

Wenn der Code die rollback()-Methode aufruft, werden alle Änderungen an der Transaktion dauerhaft verworfen. Dies gilt unabhängig davon, ob vor dem Rollback der Transaktion releaseSavepoint() aufgerufen wurde.

Wenn diese Methode ohne Parameter (oder mit dem Wert null für den name-Parameter) aufgerufen wird, werden alle Datenbankänderungen seit dem letzten unbenannten Speicherpunkt übernommen. Dies ist der Speicherpunkt, der als letzter durch einen Aufruf der MethodesetSavepoint() ohne Festlegung des name-Parameters erstellt wurde). Wenn die setSavepoint()-Methode zum Beispiel dreimal aufgerufen wurde, werden drei Speicherpunkte erstellt. Durch einen Aufruf von releaseSavepoint() zu diesem Zeitpunkt werden die SQL-Vorgänge übernommen, die seit Erstellen des dritten (neuesten) Speicherpunktes ausgeführt wurden.

Wenn für den name-Parameter ein Wert angegeben wird, übernimmt diese Methode alle SQL-Vorgänge in die Datenbank, die seit dem Speicherpunkt mit dem angegebenen Namen ausgeführt wurden. Wurden nach dem angegebenen Speicherpunkt noch weitere Speicherpunkte erstellt, werden auch die nach diesen Speicherpunkten ausgeführten Vorgänge übernommen.

Nachdem ein Speicherpunkt übernommen oder zurückgenommen wurde, werden dieser Speicherpunkt und ggf. vorhandene neuere Speicherpunkte entfernt. Wenn der Code nach dem Aufruf von releaseSavepoint() oder rollbackToSavepoint() weitere SQL-Vorgänge ausführt, gehören diese Vorgänge zu dem neuesten verbleibenden Speicherpunkt. (Anders ausgedrückt, sie gehören zu dem Speicherpunkt, der als letztes vor dem entfernten Speicherpunkt erstellt wurde.) Wenn kein Speicherpunkt verbleibt, gehören die Vorgänge zur Haupttransaktion.

setSavepoint()rollbackToSavepoint()releaseSavepointflash.events:SQLEventWird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde. Wird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde.errorflash.events:SQLErrorEventWird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt. Wird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt.
removeEventListener Entfernt einen Listener aus dem EventDispatcher-Objekt.typeStringDer Typ des Ereignisses. listenerFunctionDas zu entfernende Listener-Objekt. useCaptureBooleanfalse Gibt an, ob der Listener für die Erfassungsphase oder die Ziel- und Bubbling-Phase registriert wurde. Wenn der Listener sowohl für die Aufnahme- als auch für die Bubbling-Phase registriert wurde, sind auch zwei Aufrufe von removeEventListener() erforderlich, um beide zu entfernen: ein Aufruf, bei dem useCapture auf true gesetzt ist, und einer, bei dem useCapture auf false gesetzt ist. Entfernt einen Listener aus dem EventDispatcher-Objekt. Wenn kein entsprechender Listener mit dem EventDispatcher-Objekt registriert ist, hat ein Aufruf dieser Methode keine Auswirkungen. rollbackToSavepoint Nimmt alle SQL-Vorgänge zurück, die seit dem letzten Speicherpunkt bzw. seit dem angegebenen Speicherpunkt ausgeführt wurden.wenn der name-Parameterwert ein leerer String ("") ist. ArgumentErrorArgumentErrorWenn die Methode aufgerufen wird, während die SQLConnection-Instanz nicht mit einer Datenbank verbunden ist (die connected-Eigenschaft weist den Wert false auf) oder wenn aktuell keine Transaktion offen ist (die inTransaction-Eigenschaft weist den Wert false auf). IllegalOperationErrorflash.errors:IllegalOperationErrorWenn der Vorgang im synchronen Ausführungsmodus fehlschlägt. SQLErrorflash.errors:SQLErrornameStringnullString Der Name des Speicherpunkts, auf den der Datenbankstatus zurückgesetzt werden soll. Wenn kein Wert angegeben wird oder wenn dieser Parameter null ist (die Standardeinstellung) wird der neueste unbenannte Speicherpunkt (erstellt durch einen Aufruf von setSavepoint() ohne name-Wert) verwendet. Der Wert von name kann kein leerer String "") sein. responderflash.net:RespondernullResponder Ein Objekt, das die Methoden angibt, die im Anschluss an einen erfolgreich abgeschlossenen oder fehlgeschlagenen Vorgang aufgerufen werden. Wenn im asynchronen Ausführungsmodus das responder-Argument den Wert null aufweist, wird bei Abschluss der Ausführung ein rollbackToSavepoint- oder error-Ereignis ausgelöst. Nimmt alle SQL-Vorgänge zurück, die seit dem letzten Speicherpunkt bzw. seit dem angegebenen Speicherpunkt ausgeführt wurden.

Beachten Sie, dass bei der Übernahme der gesamten Transaktion durch einen Aufruf der commit()-Methode alle Änderungen in der Transaktion, die nicht bereits durch einen Aufruf der rollbackToSavepoint()-Methode zurückgenommen wurden, dauerhaft in der Datenbank gespeichert werden. Durch eine Aufruf der rollback()-Methode werden alle Änderungen dauerhaft verworfen, unabhängig davon, ob vor dem Rollback der Transaktion einzelne Speicherpunkte übernommen (angewendet) oder zurückgenommen wurden.

Wenn diese Methode ohne Parameter (oder mit dem Wert null für den name-Parameter) aufgerufen wird, werden alle Datenbankänderungen seit dem letzten unbenannten Speicherpunkt zurückgenommen. Dies ist der Speicherpunkt, der als letzter durch einen Aufruf der MethodesetSavepoint() ohne Festlegung des name-Parameters erstellt wurde).

Wenn für den name-Parameter ein Wert angegeben wird, nimmt diese Methode alle SQL-Vorgänge zurück, die seit dem Speicherpunkt mit dem angegebenen Namen ausgeführt wurden. Wurden nach dem angegebenen Speicherpunkt noch weitere Speicherpunkte erstellt, werden auch die nach diesen Speicherpunkten ausgeführten Vorgänge zurückgenommen.

Nachdem ein Speicherpunkt übernommen oder zurückgenommen wurde, werden dieser Speicherpunkt und ggf. vorhandene neuere Speicherpunkte entfernt. Wenn der Code nach dem Aufruf von releaseSavepoint() oder rollbackToSavepoint() weitere SQL-Vorgänge ausführt, gehören diese Vorgänge zu dem neuesten verbleibenden Speicherpunkt. (Anders ausgedrückt, sie gehören zu dem Speicherpunkt, der als letztes vor dem entfernten Speicherpunkt erstellt wurde.) Wenn kein Speicherpunkt verbleibt, gehören die Vorgänge zur Haupttransaktion.

setSavepoint()releaseSavepoint()rollbackToSavepointflash.events:SQLEventWird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde. Wird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde.errorflash.events:SQLErrorEventWird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt. Wird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt.
rollback Macht eine vorhandene Transaktion, die mit der Methode „begin()“ erstellt wurde, rückgängig, d. h. alle in der Transaktion durch SQL-Anweisungen vorgenommen Änderungen werden verworfen.Wenn die Methode aufgerufen wird, während die SQLConnection-Instanz nicht mit einer Datenbank verbunden ist (die connected-Eigenschaft weist den Wert false auf) oder wenn aktuell keine Transaktion offen ist (die inTransaction-Eigenschaft weist den Wert false auf). IllegalOperationErrorflash.errors:IllegalOperationErrorWenn der Vorgang im synchronen Ausführungsmodus fehlschlägt. SQLErrorflash.errors:SQLErrorresponderflash.net:RespondernullEin Objekt, das die Methoden angibt, die im Anschluss an einen erfolgreich abgeschlossenen oder fehlgeschlagenen Vorgang aufgerufen werden. Wenn im asynchronen Ausführungsmodus das Argument responder den Wert null aufweist, wird bei Abschluss der Ausführung ein rollback- oder error-Ereignis ausgelöst. Macht eine vorhandene Transaktion, die mit der Methode begin() erstellt wurde, rückgängig, d. h. alle in der Transaktion durch SQL-Anweisungen vorgenommen Änderungen werden verworfen.

Innerhalb einer Transaktion können dazwischenliegende Speicherpunkte mit einem Aufruf der setSavepoint()-Methode erstellt werden. Durch das Verwenden von Speicherpunkten können Sie Teile einer Transaktion übernehmen, indem Sie die releaseSavepoint()-Methode aufrufen, oder Teile einer Transaktion zurücknehmen, indem Sie rollbackToSavepoint() aufrufen. Mit einem Aufruf der rollback()-Methode werden jedoch alle Änderungen in einer Transaktion verworfen, unabhängig davon, ob bereits einzelne Speicherpunkte übernommen wurden, bevor die Transaktion zurückgenommen wird.

begin()commit()setSavepoint()releaseSavepoint()rollbackToSavepoint()rollbackflash.events:SQLEventWird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde. Wird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde.errorflash.events:SQLErrorEventWird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt. Wird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt.
setSavepoint Erstellt einen Speicherpunkt, der eine Art Lesezeichen innerhalb einer Datenbanktransaktion ist.wenn der name-Parameterwert ein leerer String ("") ist. ArgumentErrorArgumentErrorWenn diese Methode aufgerufen wird und die SQLConnection-Instanz an keine Datenbank angeschlossen ist (die Eigenschaft connected hat den Wert false). IllegalOperationErrorflash.errors:IllegalOperationErrorWenn der Vorgang im synchronen Ausführungsmodus fehlschlägt. SQLErrorflash.errors:SQLErrornameStringnullString Der Name des Speicherpunkts. Wenn kein Wert angegeben wird oder wenn dieser Parameter den Wert null hat (der Standardwert), werden mit dem nächsten Aufruf von releaseSavepoint() oder rollbackToSavepoint() ohne Angabe des name-Parameters die seit dem letzten unbenannten Speicherpunkt ausgeführten SQL-Vorgänge übernommen oder zurückgenommen.

Wenn der angegebene Name ein Duplikat eines bereits zuvor gespeicherten Speicherpunkts ist, werden mit dem nächsten Aufruf von SQLConnection.releaseSavepoint() oder SQLConnection.rollbackToSavepoint() Änderungen übernommen (angewendet) oder zurückgenommen, die seit dem neuesten Speicherpunkt mit diesem Namen ausgeführt wurden.

Der Wert von name kann kein leerer String "") sein.

responderflash.net:RespondernullResponder Ein Objekt, das die Methoden angibt, die im Anschluss an einen erfolgreich abgeschlossenen oder fehlgeschlagenen Vorgang aufgerufen werden. Wenn im asynchronen Ausführungsmodus das responder-Argument den Wert null aufweist, wird bei Abschluss der Ausführung ein setSavepoint- oder error-Ereignis ausgelöst.
Erstellt einen Speicherpunkt, der eine Art Lesezeichen innerhalb einer Datenbanktransaktion ist. Ein Speicherpunkt stellt einen Punkt innerhalb einer Transaktion dar. Die SQL-Vorgänge, die zwischen Speicherpunkten ausgeführt wurden, können separat von anderen Vorgängen übernommen oder zurückgenommen werden, indem die Methode releaseSavepoint() oder rollbackToSavepoint() aufgerufen wird. Mithilfe eines Speicherpunkts können Sie also eine Gruppe von SQL-Vorgängen als verschachtelte Transaktion behandeln.

Wenn die setSavepoint()-Methode aufgerufen wird und noch keine Transaktion geöffnet wurde (durch einen Aufruf der begin()-Methode), wird mit dieser Methode eine Transaktion gestartet und ein Speicherpunkt am Anfang der Transaktion erstellt. Wenn bereits eine Transaktion geöffnet ist, wird mit dem Aufruf von setSavepoint() ein Speicherpunkt in dieser Transaktion erstellt.

Beachten Sie, dass Änderungen erst dann dauerhaft in der Datenbank gespeichert werden, wenn die gesamte Transaktion übernommen wird. Wenn die Transaktion mit der begin()-Methode gestartet wurde, müssen Sie die commit()-Methode aufrufen, um die gesamte Transaktion zu übernehmen. Wenn eine Transaktion durch einen Aufruf von setSavepoint() gestartet wurde, während inTransaction den Wert false hat, können Sie die gesamte Transaktion beenden, indem Sie die commit()-Methode aufrufen. Die Transaktion wird auch automatisch beendet, wenn Sie releaseSavepoint() oder rollbackToSavepoint() für den Speicherpunkt, der die Transaktion gestartet hat, aufrufen.

Sie können einen Namen für einen Speicherpunkt festlegen, indem Sie einen Wert für den name-Parameter angeben. Dies ermöglicht es Ihnen, alle Änderungen, die nach diesem Speicherpunkt vorgenommen wurden, dauerhaft anzuwenden oder zurückzunehmen. Wenn kein Name angegeben wird (Standardeinstellung), wird ein unbenannter Speicherpunkt erstellt.

Nachdem ein Speicherpunkt übernommen oder zurückgenommen wurde, werden dieser Speicherpunkt und ggf. vorhandene neuere Speicherpunkte entfernt. Wenn der Code nach dem Aufruf von releaseSavepoint() oder rollbackToSavepoint() weitere SQL-Vorgänge ausführt, gehören diese Vorgänge zu dem neuesten verbleibenden Speicherpunkt. (Anders ausgedrückt, sie gehören zu dem Speicherpunkt, der als letztes vor dem entfernten Speicherpunkt erstellt wurde.) Wenn kein Speicherpunkt verbleibt, gehören die Vorgänge zur Haupttransaktion.

begin()releaseSavepoint()rollbackToSavepoint()commit()rollback()setSavepointflash.events:SQLEventWird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde. Wird ausgelöst, wenn der Vorgang erfolgreich abgeschlossen wurde.errorflash.events:SQLErrorEventWird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt. Wird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt.
autoCompact Gibt an, ob bei der Erstellung der aktuellen Datenbank das automatische Verdichten aktiviert wurde (der Wert, der für den autoCompact-Parameter beim Aufrufen von open() oder openAsync(), durch den die Datenbank erstellt wurde, angegeben wurde).Boolean Gibt an, ob bei der Erstellung der aktuellen Datenbank das automatische Verdichten aktiviert wurde (der Wert, der für den autoCompact-Parameter beim Aufrufen von open() oder openAsync(), durch den die Datenbank erstellt wurde, angegeben wurde). Weist diese Eigenschaft den Wert true auf, wird nach jedem Schreibvorgang automatisch nicht benutzter Platz aus der Datenbankdatei entfernt, um die Größe der Datei zu minimieren. Weist diese Eigenschaft den Wert false auf, verbleibt der durch entfernte Daten eingenommene Platz in der Datenbankdatei und wird bei Bedarf wiederverwendet. Selbst wenn autoCompact den Wert false aufweist, können Sie die Zurückgewinnung von nicht benutztem Platz in der Datenbank erzwingen, indem Sie die Methode compact() aufrufen.

Wenn die Eigenschaft connected den Wert false aufweist, wird diese Eigenschaft auf false gesetzt.

open()openAsync()
cacheSize Bietet Zugriff auf die Cachegröße dieser Verbindung, die die Höchstzahl der jeweils auf der Festplatte gespeicherten Datenbankseiten darstellt.uintWenn versucht wird, diese Eigenschaft einzustellen, während die SQLConnection-Instanz nicht mit einer Datenbank verbunden ist (die Eigenschaft connected weist den Wert false auf) oder wenn es aktuell eine offene Transaktion gibt (die Eigenschaft inTransaction weist den Wert true auf). IllegalOperationErrorflash.errors:IllegalOperationError Bietet Zugriff auf die Cachegröße dieser Verbindung, die die Höchstzahl der jeweils auf der Festplatte gespeicherten Datenbankseiten darstellt. Pro Seite sind etwa 1,5 KB Speicher erforderlich (abhängig vom Wert des Parameters pageSize im Aufruf der Methode open() oder openAsync(), mit der die Datenbank erstellt wurde). Die standardmäßige Cache-Größe ist 2000. Wenn eine Anwendung UPDATE- oder DELETE-Vorgänge ausführt, durch die viele Zeilen der Datenbank geändert werden, können Sie durch eine Erhöhung der Cache-Größe die Geschwindigkeit auf Kosten eines erhöhten Speicherverbrauchs verbessern. open()openAsync()columnNameStyle Gibt an, wie Spaltennamen im Ergebnis einer „SELECT“-Anweisung wiedergegeben werden.StringWenn versucht wird, diese Eigenschaft einzustellen, während die SQLConnection-Instanz nicht mit einer Datenbank verbunden ist (die Eigenschaft connected hat den Wert false). IllegalOperationErrorflash.errors:IllegalOperationError Gibt an, wie Spaltennamen im Ergebnis einer SELECT-Anweisung wiedergegeben werden.

Die in der „SQLColumnNameStyle“-Klasse definierten Konstanten repräsentieren die möglichen Werte dieser Eigenschaft:

  • SQLColumnNameStyle.LONG gibt an, dass Spaltennamen im Format [tabellenname]_[spaltenname] zurückgegeben werden.
  • SQLColumnNameStyle.SHORT gibt an, dass Spaltennamen im Format [spaltenname] zurückgegeben werden. Gibt es mehrere Spalten mit demselben Namen, wird nur eine Eigenschaft mit diesem Namen zum Ergebnisobjekt hinzugefügt.
  • Der Standardwert ist SQLColumnNameStyle.DEFAULT. Kommt dieser Wert zur Anwendung, werden die Ergebnisspaltennamen gemäß der Anzahl Tabellen in der SELECT-Anweisung, die ähnliche Spaltennamen aufweisen, formatiert. Wenn die Anweisung SELECT nur eine Tabelle enthält, wird das kurze Namensformat [spaltenname] verwendet. Enthält die SELECT-Anweisung mehrere verbundene Tabellen und weisen zwei Spalten identische Namen auf, wird für diese das lange Namensformat [tabellenname]_[spaltenname] verwendet.
flash.data.SQLColumnNameStyle
connected Gibt an, ob die „SQLConnection“-Instanz über eine offene Verbindung zu einer Datenbankdatei verfügt.Boolean Gibt an, ob die „SQLConnection“-Instanz über eine offene Verbindung zu einer Datenbankdatei verfügt. open()openAsync()close()inTransaction Gibt an, ob diese Verbindung aktuell an einer Transaktion beteiligt ist.Boolean Gibt an, ob diese Verbindung aktuell an einer Transaktion beteiligt ist. begin()commit()rollback()lastInsertRowID Der letzte von einer SQL „INSERT“-Anweisung erzeugte Zeilenbezeichner.Number Der letzte von einer SQL INSERT-Anweisung erzeugte Zeilenbezeichner. Ein Zeilenbezeichner dient zur eindeutigen Kennzeichnung einer Zeile in einer Tabelle in der Datenbank. Der Wert wird häufig von der Datenbank erzeugt.

Der Wert lautet „zero“, wenn keine Datenbank verbunden ist oder wenn keine INSERT-Anweisung ausgeführt wurde.

Den Zeilenbezeichner für die Ausführung einer SQL INSERT-Anweisung erhalten Sie über die Eigenschaft lastInsertRowID des „SQLResult“-Objekts, das durch die Methode getResult() des „SQLStatement“-Objekts zurückgegeben wird (wenn sie aufgerufen wird, nachdem SQLStatement das result-Ereignis ausgelöst hat).

Weitere Informationen zu Primärschlüsseln und generierten Zeilenbezeichnern finden Sie in den Abschnitten „CREATE TABLE“ und „Expressions“ im Anhang „SQL-Unterstützung in lokalen Datenbanken“.

flash.data.SQLResult.lastInsertRowIDflash.events.SQLUpdateEvent.rowID
pageSize Gibt die Datenbankseitengröße (in Byte) an, die bei der Erstellung der aktuellen Datenbank angegeben wurde (der Wert, der für den Parameter „pageSize“ beim Aufrufen von „open()“ oder „openAsync()“, durch den die Datenbank erstellt wurde, angegeben wurde).uint Gibt die Datenbankseitengröße (in Byte) an, die bei der Erstellung der aktuellen Datenbank angegeben wurde (der Wert, der für den Parameter pageSize beim Aufrufen von open() oder openAsync(), durch den die Datenbank erstellt wurde, angegeben wurde).

Wenn die Eigenschaft connected den Wert false aufweist, lautet der Wert dieser Eigenschaft 0.

Sie können die Seitengröße einer Datenbank ändern (mithilfe der Methoden open() oder openAsync()), solange noch keine Tabelle in der Datenbank erstellt wurde.

open()openAsync()
totalChanges Gibt die Gesamtzahl der Datenänderungen an, die vorgenommen wurden, seit die Verbindung zur Datenbank hergestellt wurde.Number Gibt die Gesamtzahl der Datenänderungen an, die vorgenommen wurden, seit die Verbindung zur Datenbank hergestellt wurde. Zusätzlich zu den Änderungen, die durch INSERT-, DELETE- und UPDATE-Anweisungen vorgenommen wurden, enthält dieser Wert auch die durch Auslöser verursachten Änderungen.

Ist die Datenbankverbindung geschlossen, wird der Wert auf „0“ zurückgesetzt. Wenn die SQLConnection-Instanz mit keiner Datenbank verbunden ist, lautet der Wert „0“.

flash.data.SQLResult.rowsAffected
SQLTriggerSchema Die in einer „SQLTriggerSchema“-Instanz enthaltenen Informationen beschreiben einen bestimmten Auslöser in einer Datenbank.flash.data:SQLSchema Die in einer „SQLTriggerSchema“-Instanz enthaltenen Informationen beschreiben einen bestimmten Auslöser in einer Datenbank. Zu den verfügbaren Informationen gehören der Name des Auslösers (die Eigenschaft name), der Name der zugewiesenen Tabelle (die Eigenschaft table) und die SQL-Anweisung, mit der der Auslöser erstellt wurde (die Eigenschaft sql).

Um die Auslöserschemainformationen für eine Datenbank zu erhalten, laden Sie die Schemainformationen mithilfe der Methode SQLConnection.loadSchema(). Achten Sie dabei darauf, dass null oder SQLTriggerSchema als Wert für das Argument type angegeben ist. Die Eigenschaft triggers der resultierenden „SQLSchemaResult“-Instanz enthält ein Array mit „SQLTriggerSchema“-Instanzen, die die Auslöser in der Datenbank repräsentieren.

Im Allgemeinen werden „SQLTriggerSchema“-Instanzen nicht direkt aufgrund von Entwicklercode erstellt.

flash.data.SQLConnection.loadSchema()SQLTriggerSchema Erstellt eine „SQLTriggerSchema“-Instanz.databaseStringDer Name der zugeordneten Datenbank. nameStringDer Name des Auslösers. sqlStringDie SQL-Anweisung, mit der der Auslöser erstellt wurde. tableStringDer Name der Tabelle, die dem Auslöser zugeordnet ist. Erstellt eine „SQLTriggerSchema“-Instanz. Im Allgemeinen wird der „SQLTriggerSchema“-Konstruktor nicht direkt durch den Entwicklercode aufgerufen. Schemainformationen für eine Datenbank erhalten Sie durch einen Aufruf der Methode SQLConnection.loadSchema(). table Der Name der Tabelle, für die der Auslöser definiert wurde, oder der Name der Ansicht, falls der Auslöser für eine Ansicht definiert wurde.String Der Name der Tabelle, für die der Auslöser definiert wurde, oder der Name der Ansicht, falls der Auslöser für eine Ansicht definiert wurde.
SQLStatement Eine SQL-Anweisung wird mithilfe einer „SQLStatement“-Instanz an einer lokalen SQL-Datenbank ausgeführt, die über eine „SQLConnection“-Instanz geöffnet ist.flash.events:EventDispatcher Eine SQL-Anweisung wird mithilfe einer „SQLStatement“-Instanz an einer lokalen SQL-Datenbank ausgeführt, die über eine „SQLConnection“-Instanz geöffnet ist.

Eine SQLStatement-Instanz wird mit einem SQLConnection-Objekt verknüpft, indem Sie die SQLConnection-Instanz als Wert der sqlConnection-Eigenschaft des SQLConnection-Objekts einstellen. Der Eigenschaft text wird der Text der auszuführenden SQL-Anweisung zugewiesen. Bei Bedarf werden die Parameterwerte der SQL-Anweisung mithilfe der Eigenschaft parameters angegeben; die Anweisung wird durch Aufrufen der Methode execute() ausgeführt.

Eine umfassende Beschreibung des von der lokalen SQL-Datenbank unterstützten SQL-Dialekts finden Sie im Anhang SQL-Unterstützung in lokalen Datenbanken.

Im asynchronen Ausführungsmodus werden die Methoden execute() und next() im Hintergrund ausgeführt, und zur Laufzeit werden beim Abschluss oder Fehlschlagen der Vorgänge Ereignisse an registrierte Ereignis-Listener oder an eine angegebene Responder-Instanz ausgelöst. Im synchronen Modus werden die Methoden auf dem Hauptanwendungs-Thread ausgeführt, was bedeutet, dass erst nach Abschluss der Datenbankvorgänge ein anderer Code ausgeführt werden kann. Außerdem wird im synchronen Modus beim Fehlschlagen der Methoden zur Laufzeit kein Fehlerereignis sondern eine Ausnahme ausgelöst.

flash.data.SQLConnectionerror Wird ausgelöst, wenn während des Vorgangs ein Fehler auftritt.flash.events.SQLErrorEvent.ERRORflash.events.SQLErrorEvent Wird ausgelöst, wenn während des Vorgangs ein Fehler auftritt. execute()next()result Wird ausgelöst, wenn die Methode „execute()“ oder „next()“ erfolgreich ausgeführt wurde.flash.events.SQLEvent.RESULTflash.events.SQLEvent Wird ausgelöst, wenn die Methode execute() oder next() erfolgreich ausgeführt wurde. Nachdem das Ereignis result ausgelöst wurde, können Sie die Methode getResult() aufrufen, um Anweisungsergebnisse abzurufen. execute()next()getResult()SQLStatement Erstellt eine „SQLStatement“-Instanz.Wenn der Konstruktor aus einer Sandbox außerhalb der Hauptanwendungs-Sandbox aufgerufen wird. SecurityErrorSecurityError Erstellt eine „SQLStatement“-Instanz. cancel Bricht die Ausführung dieser Anweisung ab. Bricht die Ausführung dieser Anweisung ab. Mithilfe dieser Methode können Sie, wie mit der SQLConnection.cancel()-Methode, eine noch nicht abgeschlossene Abfrage abbrechen. Im Gegensatz zu SQLConnection.cancel() wird mithilfe dieser Methode jedoch nur eine Anweisung abgebrochen. Wird diese Anweisung gerade nicht ausgeführt, hat das Aufrufen dieser Methode keine Auswirkung.

Als direkte Reaktion auf den Abschluss des Vorgangs cancel() werden keine Ereignisse ausgelöst. Sobald der Vorgang cancel() abgeschlossen und die Ausführung der Anweisung abgebrochen ist, wird von der „SQLStatement“-Instanz ein error-Ereignis ausgelöst, mit dem angegeben wird, dass die Ausführung der Anweisung (der Aufruf execute() oder next()) nicht abgeschlossen wurde. Wenn für den Parameter responder des Aufrufs execute() oder next() ein Wert angegeben wurde, wird die angegebene Fehlerprozedurmethode aufgerufen. In beiden Fällen weist die an die Listener übergebene SQLError-Instanz eine errorID-Eigenschaft mit dem Wert „3118“ (Vorgang abgebrochen) auf.

clearParameters Löscht alle aktuellen Parametereinstellungen. Löscht alle aktuellen Parametereinstellungen. parametersexecute Führt die in der Eigenschaft „text“ enthaltene SQL in der Datenbank aus, die mit dem „SQLConnection“-Objekt in der Eigenschaft „sqlConnection“ verbunden ist.Wenn die text-Eigenschaft den Wert null hat oder einen leeren String ("") enthält; wenn die sqlConnection-Eigenschaft nicht eingestellt ist; wenn die der sqlConnection-Eigenschaft zugewiesene SQLConnection-Instanz nicht verbunden ist; oder wenn die Anweisung gerade ausgeführt wird. IllegalOperationErrorflash.errors:IllegalOperationErrorWenn der Vorgang im synchronen Ausführungsmodus fehlschlägt. SQLErrorflash.errors:SQLErrorprefetchint-1Wenn es sich bei der Eigenschaft text der Anweisung um eine SELECT-Anweisung handelt, gibt dieser Wert an, wieviele Zeilen die zurückgegebene Anweisung enthält. Der Standardwert ist „-1“, was bedeutet, dass alle Ergebniszeilen zurückgegeben werden. Dieser Parameter wird in Verbindung mit der Methode next() verwendet, um umfangreiche Ergebnissätze in kleinere Datensätze zu unterteilen. Das kann die Beurteilung der Anwendungsleistung durch den Benutzer verbessern, da die ersten Ergebnisse schneller geliefert und Ergebnisverarbeitungsvorgänge unterteilt werden.

Wenn es sich bei der SQL-Anweisung um eine SELECT-Abfrage handelt und ein prefetch-Argument größer Null angegeben wurde, wird die Anweisung ausgeführt, bis der gesamte Ergebnissatz zurückgegeben ist oder entweder die Methode SQLStatement.cancel() oder SQLConnection.cancel() aufgerufen wird. Da die Anzahl der Zeilen in einem Ergebnissatz bei der Ausführung nicht bekannt ist, gilt die Anweisung erst als abgeschlossen, wenn sich der Cursor in der Datenbank jenseits der letzten Zeile im Ergebnissatz befindet. Wenn ein prefetch-Argument in einem execute()-Aufruf angegeben ist, muss mindestens eine Zeile mehr als die Gesamtzahl der im Ergebnissatz enthaltenen Zeilen angefordert werden (entweder durch einen prefetch-Wert, der größer als die Anzahl der im Ergebnissatz enthaltenen Zeilen ist, oder durch weitere Aufrufe der Methode next()); erst dann weist die Eigenschaft complete der resultierenden „SQLResult“-Instanz den Wert true auf.

responderflash.net:RespondernullEin Objekt, das die Methoden angibt, die im Anschluss an einen erfolgreich abgeschlossenen oder fehlgeschlagenen Vorgang aufgerufen werden. Falls im asynchronen Ausführungsmodus das Argument responder gleich null ist, wird ein result- oder error-Ereignis ausgelöst, sobald die Ausführung abgeschlossen ist.
Führt die in der Eigenschaft text enthaltene SQL an der Datenbank aus, die mit dem „SQLConnection“-Objekt in der Eigenschaft sqlConnection verbunden ist.

Falls das responder-Argument nicht gleich null ist, gibt das festgelegte Responder-Objekt die Methoden an, die aufgerufen werden, um die Ergebnisse des Vorgangs zu verarbeiten. Wenn das Argument responder den Wert null hat, wird im asynchronen Ausführungsmodus bei einem erfolgreichen Abschluss des Vorgangs ein result-Ereignis ausgelöst. Schlägt der Vorgang fehl, wird ein error-Ereignis ausgelöst.

Um auf die Ergebnisse einer Anweisung zuzugreifen, zum Beispiel auf die Ergebniszeilen einer SELECT-Anweisung oder auf den von der Datenbank generierten primären Schlüssel einer INSERT-Anweisung, rufen Sie die getResult()-Methode auf. Die Ergebnisse sind im synchronen Modus sofort nach der Ausführung der Anweisung verfügbar; im asynchronen Modus nach dem Absetzen des result-Ereignisses.

Eine Anweisung kann erst ausgeführt werden, nachdem sie vorbereitet (kompiliert) wurde. Beim ersten Aufrufen der Methode execute() einer „SQLStatement“-Instanz wird die Anweisung zur Laufzeit vorbereitet. Eine einmal vorbereitete Anweisung braucht nur aufgrund einer Änderung der Eigenschaft text erneut vorbereitet zu werden. Durch die Einstellung von Parameterwerten wird keine erneute Vorbereitung der Anweisung erforderlich.

Im folgenden Beispiel für die Ausführung eines SQLStatements wird demonstriert, wie die erfolgreiche Ausführung oder das Fehlschlagen mithilfe von Ereignis-Listenern bestimmt wird. var conn:SQLConnection; var dbStatement:SQLStatement; function init():void { conn = new SQLConnection(); conn.addEventListener(SQLEvent.OPEN, connOpenHandler); dbStatement = new SQLStatement(); dbStatement.sqlConnection = conn; dbStatement.text = "SELECT id, name, ssn FROM employees"; var dbFile:File = new File(File.separator + "employee.db"); conn.open(dbFile); } function connOpenHandler(event:SQLEvent):void { dbStatement.addEventListener(SQLEvent.RESULT, resultHandler); dbStatement.addEventListener(SQLErrorEvent.ERROR, errorHandler); dbStatement.execute(); } function resultHandler(event:SQLEvent):void { var result:SQLResult = dbStatement.getResult(); if (result != null) { var numRows:int = result.data.length; for (var i:int = 0; i < numRows; i++) { var row:Object = result.data[i]; trace("id:", row.id, ", name:", row.name, ", ssn:", row.ssn); } } } function errorHandler(event:SQLErrorEvent):void { trace("An error occured while executing the statement."); } Im folgenden Beispiel für die Ausführung eines SQLStatements wird demonstriert, wie mithilfe eines Responder-Objekts angegeben wird, welche Funktionen bei der erfolgreichen Ausführung oder dem Fehlschlagen der Anweisung aufgerufen werden. var conn:SQLConnection; var dbStatement:SQLStatement; var employeeResponder:Responder; function init():void { conn = new SQLConnection(); conn.addEventListener(SQLEvent.OPEN, connOpenHandler); dbStatement = new SQLStatement(); dbStatement.sqlConnection = conn; dbStatement.text = "SELECT id, name, ssn FROM employees"; var dbFile:File = new File(File.separator + "employee.db"); conn.open(dbFile); } function connOpenHandler(event:SQLEvent):void { employeeResponder = new Responder(resultHandler, errorHandler); dbStatement.execute(-1, employeeResponder); } function resultHandler(result:SQLResult):void { if (result != null) { var numRows:int = result.data.length; for (var i:int = 0; i < numRows; i++) { var row:Object = result.data[i]; trace("id:", row.id, ", name:", row.name, ", ssn:", row.ssn); } } } function errorHandler(error:SQLError):void { trace("An error occured while executing the statement."); }
next()getResult()resultflash.events:SQLEventWird ausgelöst, wenn die Anweisung erfolgreich ausgeführt wurde oder ein Wert für ein prefetch-Argument angegeben ist und eine SELECT-Anweisung eine oder mehrere Datenzeilen zurückgibt. Wird ausgelöst, wenn die Anweisung erfolgreich ausgeführt wurde oder ein Wert für ein „prefetch“-Argument angegeben ist und eine „SELECT“-Anweisung eine oder mehrere Datenzeilen zurückgibt.errorflash.events:SQLErrorEventWird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt. Wird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt.
getResult Bietet Zugriff auf ein „SQLResult“-Objekt, das die Ergebnisse der Anweisungsausführung enthält, und zwar einschließlich der Ergebniszeilen einer „SELECT“-Anweisung sowie weiterer Informationen über die Anweisungsausführung für alle ausgeführten Anweisungen.Ein „SQLResult“-Objekt, das das Ergebnis eines Aufrufs der Methode execute() oder next() enthält. flash.data:SQLResult Bietet Zugriff auf ein „SQLResult“-Objekt, das die Ergebnisse der Anweisungsausführung enthält, und zwar einschließlich der Ergebniszeilen einer SELECT-Anweisung sowie weiterer Informationen über die Anweisungsausführung für alle ausgeführten Anweisungen. Im asynchronen Modus stehen die Ergebnisinformationen erst nach Auslösung des result-Ergebnisses zur Verfügung.

Wenn bei der Ausführung einer SELECT-Anweisung die Methode execute() aufgerufen wird, wobei das Standardargument prefetch den Wert „-1“ hat, enthält das zurückgegebene „SQLResult“-Objekt den vollständigen Ergebnissatz der Abfrage.

Wurde das Argument prefetch für den Aufruf der Methode execute() oder next() angegeben, werden von der Methode getResult() die ältesten Ergebnisse in der Warteschlange zuerst verarbeitet. Jedesmal, wenn das Ereignis result ausgelöst wird, wird der Warteschlange ein neues „SQLResult“-Objekt hinzugefügt. Bei jedem Aufrufen der Methode getResult() wird das „SQLResult“-Objekt, das sich am längsten in der Warteschlange befindet, zurückgegeben und aus der Warteschlange entfernt. Enthält die Warteschlange keine „SQLResult“-Objekte mehr, gibt getResult() den Wert null zurück.

Beachten Sie, dass „SQLResult“-Objekte in der Warteschlange verbleiben, bis sie durch einen Aufruf von getResult() daraus entfernt werden. Beispiel: Wenn die execute()-Methode mehrfach aufgerufen wird, getResult() jedoch nicht, verbleiben die mit jedem Aufruf von execute() verknüpften SQLResult-Objekte in der Warteschlange.

execute()next()result-Ereignis
next Ruft den nächsten Teil des Ergebnissatzes einer „SELECT“-Anweisung ab.Wenn die Methode aufgerufen wird, während die Anweisung nicht ausgeführt wird, weist die Eigenschaft executing den Wert false auf. IllegalOperationErrorflash.errors:IllegalOperationErrorwenn der Vorgang im synchronen Ausführungsmodus fehlschlägt. SQLErrorflash.errors:SQLErrorprefetchint-1Wenn es sich bei der Eigenschaft text der Anweisung um eine SELECT-Anweisung handelt, gibt dieser Wert an, wieviele Zeilen die zurückgegebene Anweisung enthält. Der Standardwert ist „-1“, was bedeutet, dass alle Ergebniszeilen zurückgegeben werden. Das kann die Beurteilung der Anwendungsleistung durch den Benutzer verbessern, da die ersten Ergebnisse schneller geliefert und Ergebnisverarbeitungsvorgänge unterteilt werden. responderflash.net:RespondernullEin Objekt, das die Methoden angibt, die im Anschluss an einen erfolgreich abgeschlossenen oder fehlgeschlagenen Vorgang aufgerufen werden. Wenn das Argument responder den Wert null aufweist, wird bei Abschluss der Ausführung das Ereignis result oder error ausgelöst. Ruft den nächsten Teil des Ergebnissatzes einer SELECT-Anweisung ab. Wenn der Ergebnissatz keine weiteren Zeilen mehr enthält, wird ein result-Ereignis ausgelöst, aber kein weiteres „SQLResult“-Objekt zur Warteschlange getResult() hinzugefügt.

Falls im asynchronen Ausführungsmodus das responder-Argument nicht gleich null ist, gibt das festgelegte Responder-Objekt die Methoden an, die aufgerufen werden, um die Ergebnisse des Vorgangs zu verarbeiten. Wenn das Argument responder den Wert null hat, wird bei einem erfolgreichen Abschluss des Vorgangs ein result-Ereignis ausgelöst. Schlägt der Vorgang fehl, wird ein error-Ereignis ausgelöst.

Diese Methode kann nur aufgerufen werden, solange die Anweisung ausgeführt wird. Wenn es sich bei der Anweisung um eine SELECT-Abfrage handelt und ein prefetch-Argument größer Null angegeben wurde, wird die Anweisung ausgeführt, bis der gesamte Ergebnissatz zurückgegeben ist oder entweder die Methode SQLStatement.cancel() oder SQLConnection.cancel() aufgerufen wird.

Das folgende Beispiel demonstriert die Ausführung eines SQLStatements, in dem ausdrücklich festgelegt wurde, dass bei der ersten Rückgabe des Ergebnisses nur die ersten zehn Zeilen des Ergebnissatzes enthalten sein sollen. Der Code überprüft die Eigenschaft complete von SQLResult und ruft die Methode next() auf, falls nicht alle Zeilen abgerufen wurden. var conn:SQLConnection; var dbStatement:SQLStatement; function init():void { conn = new SQLConnection(); conn.addEventListener(SQLEvent.OPEN, connOpenHandler); dbStatement = new SQLStatement(); dbStatement.sqlConnection = conn; dbStatement.text = "SELECT id, name, ssn FROM employees"; var dbFile:File = new File(File.separator + "employee.db"); conn.open(dbFile); } function connOpenHandler(event:SQLEvent):void { dbStatement.addEventListener(SQLEvent.RESULT, resultHandler); dbStatement.addEventListener(SQLErrorEvent.ERROR, errorHandler); dbStatement.execute(10); } function resultHandler(event:SQLEvent):void { var result:SQLResult = dbStatement.getResult(); if (result != null) { var numRows:int = result.data.length; for (var i:int = 0; i < numRows; i++) { var row:Object = result.data[i]; trace("id:", row.id, ", name:", row.name, ", ssn:", row.ssn); } if (!result.complete) { dbStatement.next(10); } } } function errorHandler(event:SQLErrorEvent):void { trace("An error occured while executing the statement."); }
execute()resultflash.events:SQLEventWird ausgelöst, wenn die Anweisung erfolgreich ausgeführt wurde oder ein Wert für ein prefetch-Argument angegeben ist und der Aufruf von next() eine oder mehrere Datenzeilen zurückgibt. Wird ausgelöst, wenn die Anweisungsausführung erfolgreich abgeschlossen wird, oder wenn ein Wert für ein „prefetch“-Argument angegeben ist und der Aufruf von „next()“ eine oder mehrere Datenzeilen zurückgibt.errorflash.events:SQLErrorEventWird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt. Wird ausgelöst, wenn der Vorgang im asynchronen Ausführungsmodus fehlschlägt.
executing Gibt an, ob die Anweisung aktuell ausgeführt wird.Boolean Gibt an, ob die Anweisung aktuell ausgeführt wird.

Diese Eigenschaft hat den Wert „true“, wenn execute() aufgerufen wurde und von der Datenbank nicht alle Ergebnisse zurückgegeben wurden.

execute()
itemClass Gibt eine Klasse (Datentyp) an, die für jede als Ergebnis der Anweisungsausführung zurückgebenene Zeile verwendet wird.Class Gibt eine Klasse (Datentyp) an, die für jede als Ergebnis der Anweisungsausführung zurückgebenene Zeile verwendet wird.

Standardmäßig wird jede von einer SELECT-Anweisung zurückgegebene Zeile als „Object“-Instanz erstellt. Dabei treten die Spaltennamen des Ergebnissatzes als Eigenschaftsnamen des Objekts auf und die Werte der Spalten als die Werte der jeweiligen Eigenschaften.

Durch die Angabe einer Klasse für die Eigenschaft itemClass wird jede Zeile, die bei der Ausführung dieser „SQLStatement“-Instanz von einer SELECT-Anweisung zurückgegeben wird, als Instanz der angegebenen Klasse erstellt. Jeder Eigenschaft der Instanz itemClass wird der Wert aus der gleichnamigen Spalte zugewiesen.

Eine dieser Eigenschaft zugewiesene Klasse muss über einen Konstruktor verfügen, der keine Parameter erfordert. Außerdem muss die Klasse je eine Eigenschaft für jede von der Anweisung SELECT zurückgegebene Spalte aufweisen. Es gilt als Fehler, wenn es für eine Spalte der Liste SELECT keinen entsprechenden Eigenschaftsnamen in der Klasse itemClass gibt.

Das folgende Beispiel demonstriert, wie mithilfe der Eigenschaft itemClass zur Laufzeit Instanzen einer benutzerdefinierten Klasse aus den Ergebnissen einer SQL SELECT-Anweisung erstellt werden. // Employee class definition package { public class Employee { public var name:String; public var ssn:String; public var id:uint; public override function toString():String { return "id: "+ id.toString() + " name: " + name + " ssn: " + ssn; } } } // using the Employee class as SQLStatement.itemClass var conn:SQLConnection; var dbStatement:SQLStatement; function init():void { conn = new SQLConnection(); conn.addEventListener(SQLEvent.OPEN, connOpenHandler); dbStatement = new SQLStatement(); dbStatement.sqlConnection = conn; dbStatement.text = "SELECT id, name, ssn FROM employees"; dbStatement.itemClass = Employee; var dbFile:File = new File(File.separator + "employee.db"); conn.open(dbFile); } function connOpenHandler(event:SQLEvent):void { dbStatement.addEventListener(SQLEvent.RESULT, resultHandler); dbStatement.execute(); } function resultHandler(event:SQLEvent):void { var result:SQLResult = dbStatement.getResult(); if (result != null) { var emp:Employee; var numRows:int = result.data.length; for (var i:int = 0; i < numRows; i++) { emp = result.data[i]; trace(emp.toString()); } } }
flash.data.SQLResult.data
parameters Dient als assoziatives Array, dem Sie Werte für die in der Eigenschaft „text“ der SQL-Anweisung angegebenen Parameter hinzufügen.Object Dient als assoziatives Array, dem Sie Werte für die in der Eigenschaft text der SQL-Anweisung angegebenen Parameter hinzufügen. Bei den Array-Schlüsseln handelt es sich um die Namen der Parameter. Wenn im Anweisungstext ein unbenannter Parameter angegeben wird, handelt es sich bei seinem Schlüssel um den Index des Parameters.

Im Text einer SQL-Anweisung wird ein Parameter mit einem der folgenden Zeichen gekennzeichnet: „?“, „:“ oder „@“.

Mit den Token „:“ und „@“ wird ein benannter Parameter gekennzeichnet; die darauf folgenden Zeichen geben den Namen des Parameters an.

Beispiel: In der folgenden SQL-Anweisung wird ein Parameter namens firstName mit dem Token „:“ gekennzeichnet:

SELECT FROM employees WHERE firstName = :firstName

Das Token „?“ kennzeichnet einen indizierten (nummerierten) Parameter; gemäß der Reihenfolge der Parameter im Anweisungstext erhält jeder Parameter automatisch eine Indexposition. Die Indexpositionswerte der Parameter basieren auf null. d. h. die Indexposition des ersten Parameters lautet 0.

Parameter dienen zur typisierten Ersetzung von Werten, die bei der Konstruktion der SQL-Anweisung unbekannt sind. Nur mithilfe von Parameter kann die Speicherklasse eines an die Datenbank übergebenen Wertes sichergestellt werden. Ohne Parameter werden alle Werte auf der Basis der Typenaffinität der zugewiesenen Spalte von ihrer Textrepräsentation in eine Speicherklasse konvertiert. Weitere Informationen zu Speicherklassen und Spaltenaffinität finden Sie im Abschnitt „Datentypunterstützung“ im Anhang „SQL-Unterstützung in lokalen Datenbanken“.

Parameter werden auch als Sicherheitsmaßnahmen zur Verhinderung eines böswilligen Verfahrens, das als SQL-Injektionsangriff bekannt ist, eingesetzt. Bei einem SQL-Injektionsangriff gibt ein Benutzer einen SQL-Code an einer für Benutzer zugänglichen Stelle ein (z. B. ein Dateneingabefeld). Wenn der Anwendungscode eine SQL-Anweisung durch die direkte Verkettung einer Benutzereingabe mit dem SQL-Text erstellt, wird der vom Benutzer eingegebene SQL-Code an der Datenbank ausgeführt. Das folgende Beispiel zeigt die Verkettung der Benutzereingabe mit dem SQL-Text. Verwenden Sie dieses Verfahren nicht:

// assume the variables "username" and "password" // contain user-entered data var sql:String = "SELECT userId " + "FROM users " + "WHERE username = '" + username + "' " + " AND password = '" + password + "'"; var statement:SQLStatement = new SQLStatement(); statement.text = sql;

Ein SQL-Injektionsangriff lässt sich verhindern, indem Anweisungsparameter verwendet werden, anstatt durch Benutzer eingegebene Werte mit dem Anweisungstext zu verketten. Die Parameterwerte werden ausdrücklich als ersetzte Werte behandelt und werden nicht Teil des eigentlichen Anweisungstexts. Folgendes ist die empfohlene Alternative zur vorherigen Notierung:

// assume the variables "username" and "password" // contain user-entered data var sql:String = "SELECT userId " + "FROM users " + "WHERE username = :username " + " AND password = :password"; var statement:SQLStatement = new SQLStatement(); statement.text = sql; // set parameter values statement.parameters[":username"] = username; statement.parameters[":password"] = password;

Alle Parameterwerte müssen vor der Ausführung der Anweisung eingestellt sein. Im Array parameters angegebene Parameter werden gebunden (d. h. mit dem Anweisungstext kombiniert), wenn die Methode execute() aufgerufen wird. Nachdem execute() aufgerufen wurde, werden alle späteren Werteänderungen nicht auf die ausführende Anweisung angewendet. Bei einem anschließenden Aufrufen von execute() werden die geänderten Werte jedoch angewendet. Enthält der Anweisungstext einen Parameter, für den in der parameters-Eigenschaft kein Wert angegeben ist, tritt ein Fehler auf.

Sie können alle Parameterwerte aus der Eigenschaft parameters mithilfe der Methode clearParameters() löschen.

Das folgende Beispiel demonstriert die Verwendung des benannten Parameters :firstName in einer SQL-Anweisung. // employees is a SQLStatement instance employees.text = "SELECT FROM employees WHERE first = :firstName"; employees.parameters[":firstName"] = "Sam"; employees.execute(); Das folgende Beispiel demonstriert die Verwendung eines unbenannten Parameters in einer SQL-Anweisung. // employees is a SQLStatement instance employees.text = "SELECT FROM employees WHERE first = ?"; employees.parameters[0] = "Sam"; employees.execute();
textclearParameters()
sqlConnection Das SQLConnection-Objekt, das die Verbindung zu den Datenbanken verwaltet, auf denen die Anweisung ausgeführt wird.flash.data:SQLConnectionWenn versucht wird, den Wert dieser Eigenschaft während der Anweisungsausführung zu ändern. IllegalOperationErrorflash.errors:IllegalOperationError Das SQLConnection-Objekt, das die Verbindung zu den Datenbanken verwaltet, auf denen die Anweisung ausgeführt wird. text Der tatsächliche SQL-Text der Anweisung.StringWenn versucht wird, die Eigenschaft text während der Anweisungausführung zu ändern. IllegalOperationErrorflash.errors:IllegalOperationError Der tatsächliche SQL-Text der Anweisung.

Beim Text kann es sich um jede unterstützte SQL handeln. Eine umfassende Beschreibung des von der lokalen SQL-Datenbank unterstützten SQL-Dialekts finden Sie im Anhang „SQL-Unterstützung in lokalen Datenbanken“.

SQLMode Diese Klasse enthält die Konstanten, die die möglichen Werte des Parameters „openMode“ der Methoden „SQLConnection.open()“ und „SQLConnection.openAsync()“ darstellen.Object Diese Klasse enthält die Konstanten, die die möglichen Werte des Parameters openMode der Methoden SQLConnection.open() und SQLConnection.openAsync() darstellen. flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()CREATE Gibt an, dass die Verbindung für Aktualisierungen geöffnet wird und dass eine Datenbankdatei erstellt wird, wenn die angegebene Datei nicht existiert.createString Gibt an, dass die Verbindung für Aktualisierungen geöffnet wird und dass eine Datenbankdatei erstellt wird, wenn die angegebene Datei nicht existiert. In diesem Modus ist Lesen und Schreiben in der Datenbank zulässig. Falls die Datenbank nicht existiert, wird sie vor Abschluss des Vorgangs erstellt. flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()READ Gibt an, dass die Verbindung im schreibgeschützten Modus geöffnet wird.readString Gibt an, dass die Verbindung im schreibgeschützten Modus geöffnet wird. In diesem Modus ist Schreiben in der Datenbank nicht zulässig. Falls die Datenbank nicht existiert, schlägt der Vorgang fehl. flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()UPDATE Gibt an, dass die Verbindung für Aktualisierungen geöffnet wird und dass eine neue Datenbankdatei erstellt wird, wenn die angegebene Datei nicht existiert.updateString Gibt an, dass die Verbindung für Aktualisierungen geöffnet wird und dass eine neue Datenbankdatei erstellt wird, wenn die angegebene Datei nicht existiert. In diesem Modus ist Lesen und Schreiben in der Datenbank zulässig. Falls die Datenbank nicht existiert, schlägt der Vorgang fehl. flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()EncryptedLocalStore Die EncryptedLocalStore-Klasse bietet eine Funktion zur dauerhaften, verschlüsselten Speicherung von Daten.Object Die EncryptedLocalStore-Klasse bietet eine Funktion zur dauerhaften, verschlüsselten Speicherung von Daten.

Unterstützung von AIR-Profilen: Diese Funktion wird auf allen Desktopbetriebssystemen unterstützt, jedoch nicht auf mobilen Geräten oder Geräten mit AIR für TV. Mit der EncryptedLocalStore.isSupported-Eigenschaft können Sie testen, ob zur Laufzeit Unterstützung gegeben ist. Weitere Informationen zum AIR-Support über mehrere Profile finden Sie unter Unterstützung von AIR-Profilen.

AIR stellt einen verschlüsselten lokalen Speicher (encrypted local store, ELS) für jede auf dem Computer eines Benutzers installierte AIR-Anwendung bereit. Dadurch können Daten auf der lokalen Festplatte des Benutzers in einem verschlüsselten Format gespeichert und abgerufen werden, das von anderen Benutzern nicht leicht entschlüsselt werden kann. Für jede AIR-Anwendung wird jeweils ein separater verschlüsselter lokaler Speicher verwendet, und jede AIR-Anwendung verwendet jeweils einen separaten verschlüsselten lokalen Speicher für jedes Benutzerkonto auf dem Computer.

Verwenden Sie den verschlüsselten lokalen Speicher für die Zwischenspeicherung von Daten, die gesichert werden müssen (z. B. Anmeldeinformationen für Webdienste). Der ELS eignet sich für die Speicherung von Informationen, die für andere Benutzer nicht zugänglich sein sollen. Er schützt die Daten jedoch nicht vor anderen Prozessen, die unter demselben Benutzerkonto ausgeführt werden. ELS eignet sich deshalb nicht für den Schutz geheimer Anwendungsdaten wie DRM oder Verschlüsselungsschlüssel.

AIR verwendet DPAPI unter Windows, KeyChain unter Mac OS und KeyRing oder KWallet unter Linux, um den verschlüsselten lokalen Speicher den einzelnen Anwendungen und Benutzern zuzuordnen. Die Verschlüsselung im lokalen Speicher erfolgt mit AES-CBC 128 Bit-Verschlüsselung.

Die im verschlüsselten lokalen Speicher enthaltenen Informationen stehen nur als AIR-Anwendungsinhalt in der Sicherheits-Sandbox application zur Verfügung.

Wenn Sie eine AIR-Anwendung aktualisieren, behält die aktualisierte Version den Zugriff auf alle vorhandenen Daten im verschlüsselten lokalen Speicher, es sei denn:

  • Die Elemente wurden hinzugefügt, während ihr stronglyBound-Parameter auf true gesetzt war
  • Die vorhandene und die aktualisierte Version wurden beide vor AIR 1.5.3 veröffentlicht und das Update wurde mit einer Migrationssignatur signiert

Einschränkungen des verschlüsselten lokalen Speichers

Die Daten im verschlüsselten lokalen Speicher sind durch die Authentifizierungsdaten des Betriebssystems des Benutzers geschützt. Andere Entitäten haben keinen Zugriff auf den Speicher, solange sie sich nicht als der betreffende Benutzer anmelden können. Die Daten sind jedoch nicht vor dem Zugriff durch andere Anwendungen, die von einem authentifizierten Benutzer ausgeführt werden, geschützt. Daten, die Ihre Anwendung vor Benutzern geheim halten möchte, zum Beispiel Lizenzschlüssel oder DRM-Schlüssel, sind deshalb nicht sicher. Der verschlüsselte lokale Speicher ist nicht der geeignete Ort für die Speicherung dieser Informationen. Er ist lediglich ein geeigneter Speicherort für die persönlichen Daten eines Benutzers, zum Beispiel Kennwörter.

Daten im ELS können aus verschiedenen Gründen verloren gehen. Der Benutzer könnte die Anwendung zum Beispiel deinstallieren und die verschlüsselte Datei löschen. Oder die Herausgeber-ID wird im Rahmen eines Updates geändert. Deshalb sollte der ELS als privater Cachespeicher, nicht als permanenter Datenspeicher betrachtet werden.

Der stronglyBound-Parameter ist veraltet und sollte nicht auf true gesetzt werden. Das Einstellen des Parameters auf true bringt keinerlei zusätzlichen Schutz für Daten. Gleichzeitig geht der Zugriff auf die Daten verloren, wenn die Anwendung aktualisiert wird, selbst wenn die Herausgeber-ID gleich bleibt.

Der verschlüsselte lokale Speicher kann langsamer sein, wenn die gespeicherte Datenmenge 10 MB übersteigt.

Bei der Deinstallation einer AIR-Anwendung werden die Daten im verschlüsselten lokalen Speicher nicht gelöscht.

Zu den bewährten Verfahren bei der Verwendung des verschlüsselten lokalen Speicher gehört Folgendes:

  • Speichern Sie vertrauliche Benutzerdaten, wie Kennwörter, im verschlüsselten lokalen Speicher (indem Sie stronglyBound auf false setzen)
  • Speichern Sie im verschlüsselten lokalen Speicher keine vertraulichen Anwendungsdaten, wie DRM-Schlüssel oder Lizenz-Token
  • Stellen Sie für Ihre Anwendung eine Möglichkeit bereit, die im ELS gespeicherten Daten wiederherzustellen, falls sie verloren gehen sollten. Dies ist zum Beispiel möglich, indem der Benutzer ggf. zur erneuten Eingabe seiner Benutzerkontodaten aufgefordert wird.
  • Verwenden Sie nicht den stronglyBound-Parameter.
  • Wenn Sie stronglyBound auf true setzen, migrieren Sie gespeicherte Elemente während eines Updates nicht. Erstellen Sie die Daten stattdessen nach dem Update erneut.
  • Speichen Sie nur relativ kleine Datenmengen. Für große Datenmengen sollten Sie eine AIR-SQL-Datenbank mit Verschlüsselung verwenden.

Die Elemente im verschlüsselten lokalen Speicher werden mit einem String gekennzeichnet. Alle Elemente werden als Byte-Array-Daten gespeichert.

Daten im verschlüsselten lokalen Speicher werden in einem Unterverzeichnis des Anwendungsdatenverzeichnisses gespeichert; der Unterverzeichnispfad lautet Adobe/AIR/ELS/ gefolgt von der Anwendungs-ID.

Mit dem folgenden Codebeispiel wird ein String im verschlüsselten lokalen Speicher gespeichert, abgerufen und dann gelöscht: var str:String = "Bob"; var bytes:ByteArray = new ByteArray(); bytes.writeUTFBytes(str); EncryptedLocalStore.setItem("firstName", bytes); var storedValue:ByteArray = EncryptedLocalStore.getItem("firstName"); trace(storedValue.readUTFBytes(storedValue.length)); // "Bob" EncryptedLocalStore.removeItem("firstName");
getItem Die Daten, die dem angegebenen Namen entsprechen.Der name-Wert ist null oder ein leerer String. ArgumentErrorArgumentErrorDie ByteArray-Daten. Wenn für den angegebenen name keine Daten vorhanden sind, gibt die Methode null zurück. flash.utils:ByteArraynameStringDer Name des Elements im verschlüsselten lokalen Speicher. Die Daten, die dem angegebenen Namen entsprechen.

Wenn es kein Element mit dem angegebenen Namen gibt, gibt diese Methode null zurück.

removeItem Entfernt das Element mit dem angegebenen Namen aus dem verschlüsselten lokalen Speicher.Der name-Wert ist null oder ein leerer String. ArgumentErrorArgumentErrornameStringDer Name des Elements im verschlüsselten lokalen Speicher. Entfernt das Element mit dem angegebenen Namen aus dem verschlüsselten lokalen Speicher. reset Löscht alle Daten im verschlüsselten lokalen Speicher. Löscht alle Daten im verschlüsselten lokalen Speicher. setItem Speichert ein ByteArray-Objekt unter dem angegebenen Namen.Der name-Wert ist null oder ein leerer String. ArgumentErrorArgumentErrornameStringDer Name des Elements im verschlüsselten lokalen Speicher. dataflash.utils:ByteArrayDie Daten. stronglyBoundBooleanfalse(veraltet) Der stronglyBound-Parameter sollte auf false (Standardwert) gesetzt werden. Bei der Einstellung auf true kann das gespeicherte Element nicht abgerufen werden, falls Anwendungsdaten geändert werden. Wenn ein Benutzer zum Beispiel ein Update Ihrer Anwendung installiert, kann die aktualisierte Anwendung keine stark gebundenen („strongly bound“) Daten lesen, die zuvor in den verschlüsselten lokalen Speicher geschrieben wurden. Speichert ein ByteArray-Objekt unter dem angegebenen Namen. isSupported Die isSupported-Eigenschaft hat den Wert „true“, wenn die EncryptedLocalStore-Klasse von der aktuellen Plattform unterstützt wird, andernfalls hat sie den Wert „false“.BooleanMeldet, ob der verschlüsselte lokale Speicher im Clientsystem verfügbar ist. Die isSupported-Eigenschaft hat den Wert true, wenn die EncryptedLocalStore-Klasse von der aktuellen Plattform unterstützt wird, andernfalls hat sie den Wert false.
SQLIndexSchema Die in einer „SQLIndexSchema“-Instanz enthaltenen Informationen beschreiben einen bestimmten Index in einer Datenbank.flash.data:SQLSchema Die in einer „SQLTableSchema“-Instanz enthaltenen Informationen beschreiben eine bestimmte Tabelle in einer Datenbank. Zu den verfügbaren Informationen gehören der Name der verknüpften Tabelle (die table-Eigenschaft), die SQL-Anweisung, mit der die Indexposition erstellt wurde (die sql-Eigenschaft) und der Name derIndexposition (die name-Eigenschaft).

Um die Indexschemainformationen für eine Datenbank zu erhalten, laden Sie die Schemainformationen mithilfe der Methode SQLConnection.loadSchema(). Achten Sie dabei darauf, dass null oder SQLIndexSchema als Wert für das Argument type angegeben ist. Die Eigenschaft indices der resultierenden „SQLSchemaResult“-Instanz enthält ein Array mit „SQLIndexSchema“-Instanzen, die die Indizes in der Datenbank repräsentieren.

Im Allgemeinen werden „SQLIndexSchema“-Instanzen nicht direkt aufgrund von Entwicklercode erstellt.

flash.data.SQLConnection.loadSchema()SQLIndexSchema Erstellt eine „SQLIndexSchema“-Instanz.databaseStringDer Name der zugeordneten Datenbank. nameStringDer Name des Index. sqlStringDie SQL-Anweisung, mit der dieser Index erstellt wurde. tableStringDer Name der Tabelle, mit der dieser Index verbunden ist. Erstellt eine „SQLIndexSchema“-Instanz. Im Allgemeinen wird der „SQLIndexSchema“-Konstruktor nicht direkt durch den Entwicklercode aufgerufen. Schemainformationen für eine Datenbank erhalten Sie durch einen Aufruf der Methode SQLConnection.loadSchema(). flash.data.SQLConnection.getSchemaResult()flash.data.SQLSchemaResult.indicestable Der Name der Tabelle, mit der dieser Index verbunden ist.String Der Name der Tabelle, mit der dieser Index verbunden ist.
SQLTableSchema Die in einer „SQLTableSchema“-Instanz enthaltenen Informationen beschreiben eine bestimmte Tabelle in einer Datenbank.flash.data:SQLSchema Die in einer „SQLTableSchema“-Instanz enthaltenen Informationen beschreiben eine bestimmte Tabelle in einer Datenbank. Zu den verfügbaren Informationen gehören der Name der Tabelle (die name-Eigenschaft), die SQL-Anweisung, mit der die Tabelle erstellt wurde (die sql-Eigenschaft) und Informationen zu den Tabellenspalten (die columns-Eigenschaft).

Um die Tabellenschemainformationen für eine Datenbank zu erhalten, laden Sie die Schemainformationen mithilfe der Methode SQLConnection.loadSchema(). Achten Sie dabei darauf, dass null oder SQLTableSchema als Wert für das Argument type angegeben ist. Die Eigenschaft tables der resultierenden „SQLSchemaResult“-Instanz enthält ein Array mit „SQLTableSchema“-Instanzen, die die Tabellen in der Datenbank repräsentieren.

Im Allgemeinen werden „SQLTableSchema“-Instanzen nicht direkt aufgrund von Entwicklercode erstellt.

flash.data.SQLConnection.loadSchema()flash.data.SQLColumnSchemaSQLTableSchema Erstellt eine „SQLTableSchema“-Instanz.databaseStringDer Name der zugeordneten Datenbank. nameStringDer Name der Tabelle. sqlStringDie SQL-Anweisung, mit der die Tabelle erstellt wurde. columnsArrayArray mit „SQLColumnSchema“-Instanzen, die die Tabellenspalten beschreiben. Erstellt eine „SQLTableSchema“-Instanz. Im Allgemeinen wird der „SQLTableSchema“-Konstruktor nicht direkt durch den Entwicklercode aufgerufen. Schemainformationen für eine Datenbank erhalten Sie durch einen Aufruf der Methode SQLConnection.loadSchema(). flash.data.SQLConnection.getSchemaResult()flash.data.SQLSchemaResult.tablescolumns Ein Array mit „SQLColumnSchema“-Instanzen, die Schemainformationen zu den Tabellenspalten enthalten.Array Ein Array mit „SQLColumnSchema“-Instanzen, die Schemainformationen zu den Tabellenspalten enthalten. Wenn der Aufruf von SQlConnection.loadSchema() angibt, dass Spalteninformationen aus dem Ergebnis ausgeschlossen werden sollen, handelt es sich bei der columns-Eigenschaft um ein leeres Array (ein Array, dessen length-Eigenschaft den Wert „0“ hat). flash.data.SQLColumnSchemaflash.data.SQLConnection.loadSchema()
SQLResult Die „SQLResult“-Klasse bietet Zugriff auf Daten, die auf die Ausführung einer SQL-Anweisung (eine „SQLStatement“-Instanz) hin zurückgegeben wurden.Object Die „SQLResult“-Klasse bietet Zugriff auf Daten, die auf die Ausführung einer SQL-Anweisung (eine „SQLStatement“-Instanz) hin zurückgegeben wurden.

Der Zugriff auf die SQLResult-Instanz einer SQL-Anweisung erfolgt durch den Aufruf der SQLStatement.getResult()-Methode, oder sie wird als Argument an die Ergebnisprozedur einer Responder-Instanz übergeben, die in einem Aufruf von SQLStatement.execute() oder SQLStatement.next() angegeben wird. Im Allgemeinen werden „SQLResult“-Instanzen nicht direkt aufgrund von Entwicklercode erstellt.

Mit einem SQLResult-Objekt können Sie: auf die von einer SELECT-Anweisung zurückgegebenen Datenzeilen zugreifen (mithilfe der data-Eigenschaft), die Zeilenbezeichnerinformationen einer INSERT-Anweisung abrufen (mithilfe der lastInsertRowID-Eigenschaft), die Anzahl der von einer INSERT-, UPDATE- oder DELETE-Anweisung betroffenen Zeilen bestimmen (mithilfe der rowsAffected-Eigenschaft) oder bestimmen, ob es weitere SELECT-Ergebniszeilen gibt, die nicht abgerufen wurden (mithilfe der complete-Eigenschaft).

flash.data.SQLStatement.getResult()flash.data.SQLStatement.execute()flash.data.SQLStatement.next()SQLResult Erstellt eine „SQLResult“-Instanz.dataArraynullDas Zeilen-Array, das nach der Anweisungsausführung zurückgegeben wurde. Wenn die Anweisung keine Zeilen zurückgibt, muss dieser Wert „null“ lauten. rowsAffectedNumber0Gibt an, auf wie viele Zeilen sich die ausgeführte Anweisung ausgewirkt hat. completeBooleantrueGibt an, ob weitere Zeilen aufgerufen werden können oder ob alle Daten zurückgegeben wurden. rowIDNumber0Handelte es sich bei der Anweisung um einen SQL INSERT-Vorgang, ist dies der neue eindeutige Bezeichner der Zeile. Erstellt eine „SQLResult“-Instanz. Im Allgemeinen wird der „SQLResult“-Konstruktor nicht direkt durch den Entwicklercode aufgerufen. Um eine SQLResult-Instanz abzurufen, die mit einer bestimmten SQLStatement-Instanz verknüpft ist, müssen Sie die getResult()-Methode dieser Instanz aufrufen. Außerdem wird eine SQLResult-Instanz als Argument an die Ergebnisprozedurfunktion übergeben, wenn eine Responder-Instanz in einem Aufruf der execute()- oder next()-Methode angegeben wird. complete Gibt an, ob alle aus einer Anweisungsausführung resultierenden Daten zurückgegeben wurden.Boolean Gibt an, ob alle aus einer Anweisungsausführung resultierenden Daten zurückgegeben wurden.

Wenn die Anweisung eine oder mehrere Zeilen zurückgibt, gibt diese Eigenschaft an, ob alle Zeilen zurückgegeben wurden. Wird die Methode execute() eines „SQLStatement“-Objekts mit einem prefetch-Argumentwert aufgerufen, wird nur die angegebene Anzahl Zeilen der resultierenden Daten in der Eigenschaft data des „SQLResult“-Objekts zurückgegeben. Durch spätere Aufrufe von SQLStatement.next() werden weitere Daten zur Verfügung gestellt. Mit dieser Eigenschaft wird die Rückgabe der letzten Ergebnisse bestimmt.

Da die Anzahl der Zeilen bei der Ausführung nicht bekannt ist, gilt die Anweisungsausführung erst als abgeschlossen, wenn sich der Datenbankcursor jenseits der letzten Zeile befindet. Wenn die Methode SQLStatement.execute() mit einem prefetch-Argument aufgerufen wird, muss die Abfrage mindestens eine Zeile mehr enthalten als die Gesamtzahl der Zeilen im Ergebnis, damit die Eigenschaft complete der resultierenden „SQLResult“-Instanz den Wert true aufweist.

flash.data.SQLStatement.execute()flash.data.SQLStatement.next()
data Die als Ergebnis der Anweisungsausführung zurückgegebenen Daten, insbesondere wenn eine SQL „SELECT“-Anweisung ausgeführt wird.Array Die als Ergebnis der Anweisungsausführung zurückgegebenen Daten, insbesondere wenn eine SQL SELECT-Anweisung ausgeführt wird.

Wenn eine Anweisung eine oder mehrere Zeilen zurückgibt, ist diese Eigenschaft ein Array mit Objekten, die die Zeilen der Ergebnisdaten repräsentiert. Jedes Objekt in diesem Array verfügt über Eigenschaftennamen, die den Spaltennamen aus den Ergebnisdaten entsprechen.

Angenommen, Sie führen die SQL-SELECT-Anweisung aus:

SELECT lastName, firstName FROM employees

Wenn die employees-Tabelle 10 Zeilen enthält, ist die SQLResult.data-Eigenschaft ein Array mit 10 Elementen. Jedes Element ist ein Objekt mit zwei Eigenschaften, lastName und firstName.

Die Situation ist komplexer, wenn Sie eine SELECT-Anweisung mit einer komplexen Ergebnisspalte, zum Beispiel einer Aggregatfunktion, verwenden. Angenommen, Sie führen die folgende SQL aus:

SELECT departmentId, SUM(salary) FROM employees GROUP BY departmentId

In den Ergebnissen dieser Anweisung hat jedes Objekt im data-Array zwei Eigenschaften, nämlich departmentId und SUM(salary). „SUM(salary)“ ist jedoch kein gültiger Bezeichner. Wenn Sie eine berechnete Spalten verwenden, zum Beispiel ein Aggregat oder eine andere Funktion, geben Sie in Ihrer SQL-Anweisung einen Aliasnamen für die berechnete Spalte an. Der Aliasname wird als Eigenschaftenname in den Ergebnisdatenobjekten verwendet. Betrachten Sie zum Beispiel die folgende Alternative zur vorherigen Anweisung:

SELECT departmentId, SUM(salary) AS salarySubtotal FROM employees GROUP BY departmentId

Im data-Array dieser Anweisung haben die Ergebnisobjekte zwei Eigenschaften mit den Namen departmentId und salarySubtotal.

Die data-Eigenschaft ist immer ein Array, unabhängig davon, wie viele Reihen und Spalten im Ergebnissatz enthalten sind. Die folgende SELECT-Anweisung resultiert in einer Zeile und einer Spalte, was einem einzelnen Wert entspricht:

SELECT COUNT(~~) AS numEmployees FROM employees

Nach dem Ausführen der Abfrage enthält die data-Eigenschaft ein Array-Objekt mit einem Element. Dieses Element ist ein Objekt mit einer einzelnen Eigenschaft, numEmployees.

Falls es in den Ergebnisdaten doppelte Spaltennamen gibt, zum Beispiel, wenn die SELECT-Anweisung zwei verschiedene id-Spalten aus zwei verschiedenen Tabellen enthält, erhalten die doppelten Namen Eigenschaftennamen entsprechend dem Wert der SQLConnection.columnNameStyle-Eigenschaft. Standardmäßig werden die Namen der einzelnen Spalten als Eigenschaftennamen verwendet, wenn es jedoch mehrere Spalten mit demselben Namen im Ergebnissatz gibt, wird für die identisch benannten Spalten die lange Namensform [table-name]_[column-name] verwendet. Dieses Verhalten kann durch das Festlegen der SQLConnection.columnNameStyle-Eigenschaft geändert werden.

Standardmäßig handelt es sich bei den Objekten im data-Array um Object-Instanzen. Wenn der Wert der SQLStatement.itemClass-Eigenschaft jedoch auf eine Klasse gesetzt wird, werden die Elemente des data-Arrays stattdessen als Instanzen dieser Klasse erstellt. Für jede Spalte im Ergebnisdatensatz muss die itemClass-Klasse eine Eigenschaft aufweisen, deren Name genau dem Spaltennamen entspricht.

Wenn eine Anweisung keine Daten zurückgibt, hat diese Eigenschaft den Wert null. Dies ist der Fall, wenn die Anweisung keine SELECT-Anweisung ist oder wenn sie eine SELECT-Anweisung ist, die 0 Zeilen zurückgibt.

Das folgende Beispiel demonstriert, wie mithilfe der Eigenschaft itemClass zur Laufzeit Instanzen einer benutzerdefinierten Klasse aus den Ergebnissen einer SQL SELECT-Anweisung erstellt werden. // Employee class definition package { public class Employee { public var name:String; public var ssn:String; public var id:uint; public override function toString():String { return "id: "+ id.toString() + " name: " + name + " ssn: " + ssn; } } } // using the Employee class as SQLStatement.itemClass var conn:SQLConnection; var dbStatement:SQLStatement; function init():void { conn = new SQLConnection(); conn.addEventListener(SQLEvent.OPEN, connOpenHandler); dbStatement = new SQLStatement(); dbStatement.sqlConnection = conn; dbStatement.text = "SELECT id, name, ssn FROM employees"; dbStatement.itemClass = Employee; var dbFile:File = new File(File.separator + "employee.db"); conn.open(dbFile); } function connOpenHandler(event:SQLEvent):void { dbStatement.addEventListener(SQLEvent.RESULT, resultHandler); dbStatement.execute(); } function resultHandler(event:SQLEvent):void { var result:SQLResult = dbStatement.getResult(); if (result != null) { var emp:Employee; var numRows:int = result.data.length; for (var i:int = 0; i < numRows; i++) { emp = result.data[i]; trace(emp.toString()); } } }
SQLConnection.columnNameStyleSQLStatement.itemClass
lastInsertRowID Der letzte von einer SQL „INSERT“-Anweisung erzeugte Zeilenbezeichner.Number Der letzte von einer SQL INSERT-Anweisung erzeugte Zeilenbezeichner.

Handelt es sich bei der ausgeführten Anweisung nicht um eine INSERT-Anweisung, lautet der Wert „0“.

Ein Zeilenbezeichner dient zur eindeutigen Kennzeichnung einer Zeile in einer Tabelle in der Datenbank. Der Wert wird häufig von der Datenbank erzeugt.

Weitere Informationen zu Primärschlüsseln und generierten Zeilenbezeichnern finden Sie in den Abschnitten „CREATE TABLE“ und „Ausdrücke“ im Anhang „SQL-Unterstützung in lokalen Datenbanken“.

flash.data.SQLConnection.lastInsertRowIDflash.events.SQLUpdateEvent.rowID
rowsAffected Gibt an, wieviele Zeilen von dem Vorgang betroffen wurden.Number Gibt an, wieviele Zeilen von dem Vorgang betroffen wurden. Es werden nur Änderungen gezählt, die direkt von einer INSERT-, UPDATE- oder DELETE-Anweisung angegeben werden.

Zusätzliche Änderungen, die von Auslösern verursacht werden, werden nicht gezählt. Mithilfe der Eigenschaft SQLConnection.totalChanges können Sie die Gesamtzahl aller Änderungen, einschließlich derjenigen, die von Auslösern verursacht wurden, in Erfahrung bringen.

Wenn es sich bei der entsprechenden SQL-Methode um eine DELETE-Anweisung ohne WHERE-Klausel handelt (d. h. alle in der Tabelle enthaltenen Zeilen werden durch die Anweisung gelöscht), hat die rowsAffected-Eigenschaft immer den Wert „0“. Dabei ist es gleichgültig, wie viele Zeilen gelöscht wurden. Wenn Sie wissen müssen, wie viele Zeilen gelöscht wurden, können Sie die WHERE-Klausel WHERE 1 = 1 einschließen. In diesem Fall werden alle Zeilen gelöscht, und die rowsAffected-Eigenschaft gibt die genaue Anzahl der gelöschten Zeilen wieder. Werden viele Zeilen gelöscht, kann sich dies jedoch nachteilig auf die Leistung der Anweisung auswirken.

flash.data.SQLConnection.totalChanges