flash.dataSQLViewSchema Une occurrence SQLViewSchema fournit des informations décrivant une vue spécifique dans une base de données.flash.data:SQLTableSchema Une occurrence SQLViewSchema fournit des informations décrivant une vue spécifique dans une base de données. Elle contient le nom de la vue (la propriété name), l’instruction SQL utilisée pour créer la vue (la propriété sql) et des informations sur les colonnes de la vue (la propriété columns).

Pour obtenir les informations du schéma d’une vue d’une base de données, utilisez la méthode SQLConnection.loadSchema() pour charger les informations du schéma, en vous assurant d’utiliser null ou SQLViewSchema comme valeur d’argument type. Dans l’occurrence SQLSchemaResult résultante, la propriété views contient un tableau d’occurrences SQLViewSchema représentant les vues de la base de données.

En général, le code du développeur ne construit pas directement d’occurrences SQLViewSchema.

flash.data.SQLConnection.loadSchema()flash.data.SQLColumnSchemaSQLViewSchema Crée une occurrence SQLViewSchema.databaseStringNom de la base de données associée. nameStringNom de la vue. sqlStringInstruction SQL utilisée pour créer la vue. columnsArrayTableau d’occurrences SQLColumnSchema décrivant les colonnes de cette vue. Crée une occurrence SQLViewSchema. En général, le code du développeur n’appelle pas directement le constructeur SQLViewSchema. Pour obtenir les informations de schéma d’une base de données, appelez la méthode SQLConnection.loadSchema().
SQLColumnSchema La classe SQLColumnSchema fournit des informations décrivant les caractéristiques d’une colonne spécifique dans une table de base de données.Object La classe SQLColumnSchema fournit des informations décrivant les caractéristiques d’une colonne spécifique dans une table de base de données.

Pour obtenir les informations du schéma des colonnes pour une ou plusieurs tables de base de données, utilisez la méthode SQLConnection.loadSchema() pour charger les informations du schéma, en vous assurant d’utiliser true comme valeur d’argument includeColumnSchema. Dans l’occurrence SQLSchemaResult résultante, chaque définition de table et de vue inclut une propriété columns, tableau d’occurrences SQLColumnSchema représentant les colonnes de la table ou de la vue.

En général, le code du développeur ne construit pas directement d’occurrences SQLColumnSchema.

flash.data.SQLConnection.loadSchema()flash.data.SQLTableSchemaflash.data.SQLViewSchemaSQLColumnSchema Construit une occurrence SQLColumnSchema.nameStringNom de la colonne. primaryKeyBooleanIndique si cette colonne fait partie de la clé primaire de la table associée. allowNullBooleanIndique si cette colonne peut contenir des valeurs NULL. autoIncrementBooleanIndique s’il s’agit d’une colonne à incrémentation automatique. dataTypeStringType déclaré de la colonne. defaultCollationTypeStringOrdre de classement défini pour cette colonne. Cette valeur correspond à l’une des constantes de la classe SQLCollationType :
  • SQLCollationType.BINARY indique que la colonne utilise l’ordre de classement BINARY.
  • SQLCollationType.NO_CASE indique que la colonne utilise l’ordre de classement NOCASE, c’est-à-dire que les comparaisons de textes ne respectent pas la casse.
Construit une occurrence SQLColumnSchema. En général, le code du développeur n’appelle pas directement le constructeur SQLColumnSchema. Pour obtenir les informations de schéma d’une base de données, appelez la méthode SQLConnection.loadSchema().
flash.data.SQLConnection.loadSchema()flash.data.SQLCollationType
allowNull Indique si les valeurs NULL sont autorisées dans cette colonne.Boolean Indique si les valeurs NULL sont autorisées dans cette colonne. Une colonne déclarée avec une contrainte NOT NULL a une valeur false pour la propriété allowNull. autoIncrement Indique s’il s’agit d’une colonne à incrémentation automatique.Boolean Indique s’il s’agit d’une colonne à incrémentation automatique. Une colonne à incrémentation automatique est un type spécial de colonnes PRIMARY KEY dont la valeur est automatiquement générée en tant que valeur suivante d’une suite de nombres entiers lorsqu’une nouvelle ligne est insérée dans la table. dataType Extrait le type de données de la colonne sous la forme d’une chaîne.String Extrait le type de données de la colonne sous la forme d’une chaîne. La valeur est le nom du type de données littéral spécifié dans l’instruction CREATE TABLE utilisée pour définir la table, ou null lorsque aucun type de données n’a été spécifié. defaultCollationType Indique l’ordre de classement défini pour cette colonne.String Indique l’ordre de classement défini pour cette colonne. La valeur de cette propriété correspond à l’une des constantes de la classe SQLCollationType :
  • SQLCollationType.BINARY indique que la colonne utilise l’ordre de classement BINARY.
  • SQLCollationType.NO_CASE indique que la colonne utilise l’ordre de classement NOCASE, c’est-à-dire que les comparaisons de textes ne respectent pas la casse.
flash.data.SQLCollationType
name Extrait le nom de la colonne.String Extrait le nom de la colonne. primaryKey Indique si cette colonne est celle de la clé primaire (ou l’une des colonnes de clé primaire dans le cas d’une clé composite) de la table associée.Boolean Indique si cette colonne est celle de la clé primaire (ou l’une des colonnes de clé primaire dans le cas d’une clé composite) de la table associée.
SQLColumnNameStyle Cette classe contient les constantes représentant les valeurs possibles de la propriété SQLConnection.columnNameStyle.Object Cette classe contient les constantes représentant les valeurs possibles de la propriété SQLConnection.columnNameStyle. Ces valeurs indiquent les différentes options qui contrôlent le formatage des noms de colonnes (noms des propriétés) dans les objets renvoyés en tant que résultat d’une instruction SQL SELECT. flash.data.SQLConnection.columnNameStyleDEFAULT Indique que les noms de colonnes renvoyées par une instruction SELECT utilisent le format par défaut.defaultString Indique que les noms de colonnes renvoyées par une instruction SELECT utilisent le format par défaut. Dans le format par défaut, les noms de colonnes ont la forme [nom tableau]_[nom colonne] lorsque plusieurs tables sont incluses dans l’instruction SELECT ou [nom colonne] lorsque l’instruction SELECT ne comprend qu’une seule table. flash.data.SQLConnection.columnNameStyleLONG Indique que les noms de colonnes renvoyées par une instruction SELECT utilisent le format nom-colonne-long.longString Indique que les noms de colonnes renvoyées par une instruction SELECT utilisent le format nom-colonne-long. Dans ce format, les noms de colonnes utilisent la forme [nom tableau]_[nom colonne] quel que soit le nombre de tables incluses dans l’instruction SELECT. flash.data.SQLConnection.columnNameStyleSHORT Indique que les noms de colonnes renvoyées par une instruction SELECT utilisent le format nom-colonne-court.shortString Indique que les noms de colonnes renvoyées par une instruction SELECT utilisent le format nom-colonne-court. Dans ce format, les noms de colonnes utilisent la forme [nom colonne] quel que soit le nombre de tables incluses dans l’instruction SELECT.

Si le jeu de résultats contient plusieurs colonnes portant le même nom, une seule propriété portant ce nom est ajoutée à l’objet de résultat. La valeur affectée à cette propriété provient de la dernière colonne portant ce nom dans la ligne de résultats. Examinons par exemple l’instruction SELECT suivante :

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

Lorsque cette instruction est exécutée sur une occurrence SQLConnection avec un format de nom de colonne court, chaque objet de résultat a une propriété nommée customerId, contenant la valeur de la colonne customerId de la table addresses.

flash.data.SQLConnection.columnNameStyle
SQLSchema La classe SQLSchema est la classe de base pour les informations du schéma relatif aux objets de base de données; tels que les tables, les vues et les index.Object La classe SQLSchema est la classe de base pour les informations du schéma relatif aux objets de base de données; tels que les tables, les vues et les index.

Pour obtenir les informations du schéma d’une base de données, utilisez la méthode SQLConnection.loadSchema() pour charger les informations du schéma. L’occurrence SQLSchemaResult résultante contient des tableaux d’occurrences représentant les objets de la base de données.

En général, le code du développeur ne construit pas directement d’occurrences SQLSchema.

flash.data.SQLConnection.loadSchema()SQLSchema Crée une occurrence SQLSchema.databaseStringNom de la base de données associée. nameStringNom de l’objet de base de données. sqlStringCode SQL utilisé pour construire l’objet de base de données. Crée une occurrence SQLSchema. En général, le code du développeur n’appelle pas directement le constructeur SQLSchema. Pour obtenir les informations de schéma d’une base de données, appelez la méthode SQLConnection.loadSchema(). database Nom de la base de données à laquelle cet objet de schéma appartient.String Nom de la base de données à laquelle cet objet de schéma appartient. Le nom est « main » pour la base de données principale associée à une occurrence SQLConnection (le fichier de bases de données est ouvert en appelant la méthode open() ou openAsync() d’une occurrence SQLConnection). Pour les autres bases de données associées à la connexion à l’aide de la méthode SQLConnection.attach(), la valeur est le nom spécifié dans l’appel de méthode attach(). flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()flash.data.SQLConnection.attach()name Nom de cet objet de schéma.String Nom de cet objet de schéma. Dans une base de données, chaque objet porte un nom unique. Le nom est défini dans l’instruction SQL qui crée l’objet (telle que l’instruction CREATE TABLE pour une table).

Par exemple, si un index de base de données est créé avec l’instruction SQL suivante, la valeur de la propriété name du schéma de cet index est « customer_index » :

CREATE INDEX customer_index ON customers (id)
sql Renvoie l’ensemble du texte de l’instruction SQL utilisée pour créer cet objet de schéma.String Renvoie l’ensemble du texte de l’instruction SQL utilisée pour créer cet objet de schéma. Chaque objet d’une base de données est créé par une instruction SQL.

Par exemple, si un index de base de données est créé par l’instruction SQL suivante :

CREATE INDEX customer_index ON customers (id)

la propriété sql de ce schéma d’index est l’ensemble du texte de l’instruction.

SQLCollationType Cette classe contient les constantes représentant les valeurs possibles pour le paramètre defaultCollationType du constructeur SQLColumnSchema, ainsi que la propriété SQLColumnSchema.defaultCollationType.Object Cette classe contient les constantes représentant les valeurs possibles pour le paramètre defaultCollationType du constructeur SQLColumnSchema, ainsi que la propriété SQLColumnSchema.defaultCollationType.

Ces valeurs représentent les différents ordres de classement pouvant être spécifiés pour une colonne dans une table de la base de données. Un ordre de classement est une façon de trier et de comparer les données, par exemple en indiquant si la base de données fait la différence entre les caractères majuscules et minuscules.

Pour plus d’informations sur la définition et l’utilisation des ordres de classement, voir la section « COLLATE » dans l’annexe « Prise en charge de SQL dans les bases de données locales ».

flash.data.SQLColumnSchema.defaultCollationTypeBINARY Indique que la colonne est définie pour utiliser la séquence d’interclassement BINARY.binaryString Indique que la colonne est définie pour utiliser la séquence d’interclassement BINARY. Un interclassement SQLCollationType.BINARY compare deux valeurs en fonction de leurs valeurs d’octets, quel que soit le codage du texte des caractères.

Lorsqu’un classement binaire est utilisé avec des valeurs de la classe de stockage TEXT, la base de données fait la différence entre les caractères minuscules et majuscules lors du tri et de la comparaison des valeurs de la colonne.

flash.data.SQLColumnSchema.defaultCollationType
NO_CASE Indique que la colonne est définie pour utiliser la séquence d’interclassement NOCASE.noCaseString Indique que la colonne est définie pour utiliser la séquence d’interclassement NOCASE. Un classement SQLCollationType.NO_CASE ignore la casse pour trier et comparer deux valeurs. flash.data.SQLColumnSchema.defaultCollationType
SQLSchemaResult Une occurrence SQLSchemaResult contient les informations résultant d’un appel à la méthode SQLConnection.loadSchema().Object Une occurrence SQLSchemaResult contient les informations résultant d’un appel à la méthode SQLConnection.loadSchema(). Elle contient quatre propriétés Array qui gèrent les données de schéma demandées, sur la base des valeurs d’argument utilisées lors de l’appel à SQLConnection.loadSchema().

Pour récupérer l’occurrence SQLSchemaResult d’un appel à SQLConnection.loadSchema(), appelez la méthode getSchemaResult() de l’occurrence SQLConnection. En général, le code du développeur ne crée pas directement d’occurrences SQLSchemaResult.

flash.data.SQLConnection.loadSchema()flash.data.SQLConnection.getSchemaResult()SQLSchemaResult Crée une occurrence SQLSchemaResult.tablesArrayTableau d’occurrences SQLTableSchema tel que spécifié dans la requête loadSchema(). viewsArrayTableau d’occurrences SQLViewSchema tel que spécifié dans la requête loadSchema(). indicesArrayTableau d’occurrences SQLIndexSchema tel que spécifié dans la requête loadSchema(). triggersArrayTableau d’occurrences SQLTriggerSchema tel que spécifié dans la requête loadSchema(). Crée une occurrence SQLSchemaResult. En général, le code du développeur n’appelle pas directement le constructeur SQLSchemaResult. Pour obtenir les informations de schéma d’une base de données, appelez la méthode SQLConnection.loadSchema(). flash.data.SQLConnection.loadSchema()indices Tableau d’occurrences SQLIndexSchema demandé dans un appel à SQLConnection.loadSchema().Array Tableau d’occurrences SQLIndexSchema demandé dans un appel à SQLConnection.loadSchema(). Si les bases de données spécifiées ne contiennent pas d’index ou si l’appel loadSchema() indique que les index doivent être exclus du résultat, la propriété indices est un tableau vide (un tableau dont la propriété length est 0). flash.data.SQLConnection.loadSchema()flash.data.SQLIndexSchematables Tableau d’occurrences SQLTableSchema demandé dans un appel à SQLConnection.loadSchema().Array Tableau d’occurrences SQLTableSchema demandé dans un appel à SQLConnection.loadSchema(). Si les bases de données spécifiées ne contiennent pas de table ou si l’appel à loadSchema() indique que les tables doivent être exclues du résultat, la propriété tables est un tableau vide (un tableau dont la propriété length est 0). flash.data.SQLConnection.loadSchema()flash.data.SQLTableSchematriggers Tableau d’occurrences SQLTriggerSchema demandé dans un appel à SQLConnection.loadSchema().Array Tableau d’occurrences SQLTriggerSchema demandé dans un appel à SQLConnection.loadSchema(). Si les bases de données spécifiées ne contiennent pas de déclencheur ou si l’appel à loadSchema() indique que les déclencheurs doivent être exclus du résultat, la propriété triggers est un tableau vide (un tableau dont la propriété length est 0). flash.data.SQLConnection.loadSchema()flash.data.SQLTriggerSchemaviews Tableau d’occurrences SQLViewSchema demandé dans un appel à SQLConnection.loadSchema().Array Tableau d’occurrences SQLViewSchema demandé dans un appel à SQLConnection.loadSchema(). Si les bases de données spécifiées ne contiennent pas de vue ou si l’appel à loadSchema() indique que les vues doivent être exclues du résultat, la propriété views est un tableau vide (un tableau dont la propriété length est 0). flash.data.SQLConnection.loadSchema()flash.data.SQLViewSchema
SQLTransactionLockType Cette classe contient les constantes représentant les valeurs potentielles du paramètre option de la méthode SQLConnection.begin().Object Cette classe contient les constantes représentant les valeurs potentielles du paramètre option de la méthode SQLConnection.begin(). flash.data.SQLConnection.begin()DEFERRED Spécifie l’option de transaction à verrouillage différé.deferredString Spécifie l’option de transaction à verrouillage différé. Une transaction à verrouillage différé n’obtient aucun verrouillage de la base de données tant que celle-ci n’a pas été accédée une première fois. Avec une transaction différée, le verrouillage n’est pas obtenu avant la première opération de lecture ou d’écriture. flash.data.SQLConnection.begin()EXCLUSIVE Spécifie l’option de transaction à verrouillage exclusif.exclusiveString Spécifie l’option de transaction à verrouillage exclusif. Une transaction verrouillée exclusivement obtient immédiatement le verrouillage de la base de données. Les autres objets SQLStatement qui s’exécutent sur la même base de données par l’intermédiaire d’un objet SQLConnection différent (dans la même application AIR ou dans une autre application) ne peuvent pas lire ou écrire des données dans la base de données. flash.data.SQLConnection.begin()IMMEDIATE Spécifie l’option de transaction à verrouillage immédiat.immediateString Spécifie l’option de transaction à verrouillage immédiat. Une transaction à verrouillage immédiat obtient immédiatement le verrouillage de la base de données. Les autres objets SQLStatement qui s’exécutent sur la même base de données par l’intermédiaire d’un objet SQLConnection différent (dans la même application AIR ou dans une autre application) peuvent lire les données de la base de données mais ne peuvent pas en écrire. Toutefois, dans le cas des autres connexions qui peuvent lire les données de la base de données, l’état initial des données de la base est identique à l’état de la base de données avant l’appel à la méthode begin() de l’occurrence SQLConnection de la transaction entrante. Toutes les modifications de données non engagées apportées à la transaction à verrouillage immédiat ne sont pas disponibles pour les autres connexions. flash.data.SQLConnection.begin()SQLConnection Une occurrence SQLConnection est utilisée pour gérer la création et la connexion à des fichiers d’une base de données SQL locale (bases de données locales).flash.events:EventDispatcher Une occurrence SQLConnection est utilisée pour gérer la création et la connexion à des fichiers d’une base de données SQL locale (bases de données locales).

La fonctionnalité de la classe SQLConnection appartient à plusieurs catégories :

  • Un fichier de base de données SQL locale est créé ou ouvert en appelant la méthode open() ou l’occurrence de SQLConnection sur la propriété sqlConnection de la classe SQLStatement.

  • La classe SQLConnection fournit également l’état des instructions SQL, y compris un mécanisme permettant d’exécuter plusieurs instructions dans une transaction. Les transactions sont gérées à l’aide des méthodes begin(), commit()et rollback(),. En outre, les méthodes setSavepoint(), releaseSavepoint() et rollbackToSavepoint() permettent au code de définir et de gérer des points de sauvegarde. Elles sont utilisées pour subdiviser les transactions en jeux d’opérations.

  • La classe SQLConnection fournit un accès aux informations du schéma de base de données pour les bases de données connectées. Le schéma d’une base de données décrit les définitions de ses tables, colonnes, indices et déclencheurs. Reportez-vous à la méthode loadSchema() pour plus d’informations.

  • La classe SQLConnection permet de chiffrer les bases de données à l’aide de AES avec CCM. Cela permet d’authentifier les données et d’en assurer la privacité. Pour chiffrer une base de données, une clé de 16 octets doit être spécifiée (à l’aide d’un ByteArray) lors de la création de la base de données. Cette clé peut être modifiée ultérieurement à l’aide de la méthode SQLConnection.reencrypt(). Le chiffrement ralentit les performances d’écriture et de lecture de la base de données. Le chiffrement est appliqué aux données stockées sur le disque, mais pas aux données temporaires mises en mémoire cache. Le chiffrement n’est pas pris en charge par les bases de données en mémoire.

  • Une occurrence de SQLConnection peut être utilisée pour recevoir des notifications d’événement au niveau de la base de données et permettre de contrôler la configuration de tous les aspects d’une base de données, notamment la taille de la page de cache, l’annulation de processus et les options d’exécution des instructions.

Une occurrence SQLConnection opère dans l’un des deux modes d’exécution distincts : asynchrone ou synchrone. Pour utiliser l’exécution synchrone, utilisez la méthode open() pour la connexion à la base de données principale de l’occurrence SQLConnection. Pour utiliser l’exécution asynchrone, utilisez la méthode openAsync() pour la connexion à la base de données principale de l’occurrence.

Lorsque vous utilisez l’exécution asynchrone, vous utilisez des écouteurs d’événement ou une occurrence Responder pour déterminer le moment où une opération se termine ou échoue. Les opérations s’exécutent en arrière-plan plutôt que dans le thread principal de l’application ; ainsi, l’application continue de s’exécuter et de répondre aux interactions de l’utilisateur même pendant l’exécution des opérations de la base de données. Chaque occurrence de SQLConnection asynchrone exécute les instructions SQL dans son propre thread.

En mode d’exécution asynchrone, vous commencez une opération spécifique en appelant la méthode appropriée, et vous pouvez détecter la fin (ou l’échec) de l’opération en enregistrant un écouteur pour l’événement approprié. Chaque opération est associée à un événement qui se déclenche lorsque l’opération se termine avec succès. Par exemple, lorsqu’un appel de la méthode openAsync() se termine avec succès (lorsque la connexion à la base de données est établie), l’événement open se déclenche. Lorsqu’une opération échoue, un événement error est distribué. L’occurrence SQLError de la propriété error de l’objet SQLErrorEvent contient des informations sur l’erreur spécifique, y compris l’opération tentée et la raison de son échec.

Lorsque vous utilisez une exécution synchrone, il n’est pas nécessaire d’enregistrer des écouteurs d’événement pour déterminer le moment où une opération se termine ou échoue. Pour identifier les erreurs, placez les instructions rejetant l’erreur dans un bloc try..catch. Les opérations synchrones s’exécutant dans la thread d’exécution principale, toutes les fonctionnalités de l’application (y compris l’actualisation de l’écran et les interactions avec la souris et le clavier) sont interrompues pendant l’exécution de la ou des opérations de base de données. Dans le cas d’opérations à exécution longue, cela peut entraîner une interruption notable de l’application.

flash.data.SQLStatementflash.events.SQLEventflash.events.SQLErrorEventflash.errors.SQLErrorDémarrage rapide : Utilisation asynchrone d’une base de données SQL locale (Flex)Démarrage rapide : Utilisation asynchrone d’une base de données SQL locale (Flash)Démarrage rapide : Utilisation asynchrone d’une base de données SQL locale (HTML)Démarrage rapide : Utilisation asynchrone d’une base de données SQL locale (Flex)Démarrage rapide : Utilisation asynchrone d’une base de données SQL locale (Flash)Démarrage rapide : Utilisation asynchrone d’une base de données SQL locale (HTML)update Distribué lorsque les données d’une table de l’une des bases de données connectées changent après une commande SQL UPDATE.flash.events.SQLUpdateEvent.UPDATEflash.events.SQLUpdateEvent Distribué lorsque les données d’une table de l’une des bases de données connectées changent après une commande SQL UPDATE. La modification des données peut résulter directement d’une instruction UPDATE exécutée par une occurrence SQLStatement, ou résulter indirectement du déclenchement d’un déclencheur en réponse à une exécution d’instruction. flash.data.SQLStatementsetSavepoint Distribué lorsqu’un appel de la méthode setSavepoint() aboutit.flash.events.SQLEvent.SET_SAVEPOINTflash.events.SQLEvent Distribué lorsqu’un appel de la méthode setSavepoint() aboutit. setSavepoint()schema Distribué lorsque l’opération d’un appel de la méthode loadSchema() se termine avec succès et que les résultats du schéma sont prêts.flash.events.SQLEvent.SCHEMAflash.events.SQLEvent Distribué lorsque l’opération d’un appel de la méthode loadSchema() se termine avec succès et que les résultats du schéma sont prêts. loadSchema()rollbackToSavepoint Distribué lorsqu’un appel de la méthode rollbackToSavepoint() aboutit.flash.events.SQLEvent.ROLLBACK_TO_SAVEPOINTflash.events.SQLEvent Distribué lorsqu’un appel de la méthode rollbackToSavepoint() aboutit. rollbackToSavepoint()rollback Distribué lorsque une opération d’appel de la méthode rollback() se termine avec succès.flash.events.SQLEvent.ROLLBACKflash.events.SQLEvent Distribué lorsqu’une opération d’appel de la méthode rollback() se termine avec succès. rollback()releaseSavepoint Distribué lorsqu’un appel de la méthode releaseSavepoint() aboutit.flash.events.SQLEvent.RELEASE_SAVEPOINTflash.events.SQLEvent Distribué lorsqu’un appel de la méthode releaseSavepoint() aboutit. releaseSavepoint()reencrypt Distribué lorsqu’une opération d’appel de la méthode reencrypt() se termine avec succès.flash.events.SQLEvent.REENCRYPTflash.events.SQLEvent Distribué lorsqu’une opération d’appel de la méthode reencrypt() se termine avec succès. reencrypt()open Distribué lorsqu’une opération d’appel de la méthode openAsync() se termine avec succès.flash.events.SQLEvent.OPENflash.events.SQLEvent Distribué lorsqu’une opération d’appel de la méthode openAsync() se termine avec succès. openAsync()insert Distribué lorsque les données d’une table de l’une des bases de données connectées changent après une commande SQL INSERT.flash.events.SQLUpdateEvent.INSERTflash.events.SQLUpdateEvent Distribué lorsque les données d’une table de l’une des bases de données connectées changent après une commande SQL INSERT. La modification des données peut résulter directement de l’exécution d’une instruction INSERT par l’intermédiaire d’une occurrence SQLStatement, ou résulter indirectement du déclenchement d’un déclencheur en réponse à l’exécution d’une instruction. flash.data.SQLStatementerror Distribué lorsque l’une des opérations asynchrones de l’objet SQLConnection provoque une erreur.flash.events.SQLErrorEvent.ERRORflash.events.SQLErrorEvent Distribué lorsque l’une des opérations asynchrones de l’objet SQLConnection provoque une erreur. L’occurrence SQLErrorEvent déclenchée en tant qu’objet d’événement a une propriété error qui contient des informations sur l’opération tentée et sur la cause de l’échec. detach Distribué lorsqu’une opération d’appel de la méthode detach() se termine avec succès.flash.events.SQLEvent.DETACHflash.events.SQLEvent Distribué lorsqu’une opération d’appel de la méthode detach() se termine avec succès. detach()delete Distribué lorsque les données d’une table de l’une des bases de données connectées changent après une commande SQL DELETE.flash.events.SQLUpdateEvent.DELETEflash.events.SQLUpdateEvent Distribué lorsque les données d’une table de l’une des bases de données connectées changent après une commande SQL DELETE. La modification des données peut résulter directement de l’exécution d’une instruction DELETE par une occurrence SQLStatement, ou résulter indirectement du déclenchement d’un déclencheur en réponse à l’exécution d’une instruction. flash.data.SQLStatementdeanalyze Distribué lorsqu’une opération d’appel de la méthode deanalyze() se termine avec succès.flash.events.SQLEvent.DEANALYZEflash.events.SQLEvent Distribué lorsqu’une opération d’appel de la méthode deanalyze() se termine avec succès. deanalyze()commit Distribué lorsqu’une opération d’appel de la méthode commit() se termine avec succès.flash.events.SQLEvent.COMMITflash.events.SQLEvent Distribué lorsqu’une opération d’appel de la méthode commit() se termine avec succès. commit()close Distribué lorsqu’une opération d’appel de la méthode close() se termine avec succès.flash.events.SQLEvent.CLOSEflash.events.SQLEvent Distribué lorsqu’une opération d’appel de la méthode close() se termine avec succès. close()compact Distribué lorsqu’une opération d’appel de la méthode compact() se termine avec succès.flash.events.SQLEvent.COMPACTflash.events.SQLEvent Distribué lorsqu’une opération d’appel de la méthode compact() se termine avec succès. compact()cancel Distribué lorsqu’une opération d’appel de la méthode cancel() se termine avec succès.flash.events.SQLEvent.CANCELflash.events.SQLEvent Distribué lorsqu’une opération d’appel de la méthode cancel() se termine avec succès. cancel()begin Distribué lorsqu’une opération d’appel de la méthode begin() se termine avec succès.flash.events.SQLEvent.BEGINflash.events.SQLEvent Distribué lorsqu’une opération d’appel de la méthode begin() se termine avec succès. begin()attach Distribué lorsqu’une opération d’appel de la méthode attach() se termine avec succès.flash.events.SQLEvent.ATTACHflash.events.SQLEvent Distribué lorsqu’une opération d’appel de la méthode attach() se termine avec succès. attach()analyze Distribué lorsqu’une opération analyze() se termine avec succès.flash.events.SQLEvent.ANALYZEflash.events.SQLEvent Distribué lorsqu’une opération analyze() se termine avec succès. analyze()SQLConnection Crée une occurrence SQLConnection.si un constructeur est appelé à partir d’un sandbox extérieur à celui de l’application principale. SecurityErrorSecurityError Crée une occurrence SQLConnection. addEventListener Enregistre un objet écouteur d’événement auprès d’un objet EventDispatcher afin que l’écouteur soit averti d’un événement.typeStringType d’événement. listenerFunctionFonction d’auditeur qui traite l’événement. Cette fonction doit accepter un objet Event comme paramètre unique et ne rien renvoyer, comme illustré ci-dessous : function(evt:Event):void

Le nom de cette fonction n’a aucune importance.

useCaptureBooleanfalse Détermine si l’écouteur est actif pendant la phase de capture ou pendant les phases cible et de propagation. Si la propriété useCapture est définie sur true, l’écouteur traite l’événement uniquement pendant la phase de capture et non pendant les phases cible et de propagation. Si la propriété useCapture est définie sur false, l’écouteur traite l’événement uniquement pendant les phases cible et de propagation. Pour écouter l’événement dans les trois phases, appelez addEventListener à deux reprises, une première fois en définissant useCapture sur true, puis une nouvelle fois en définissant useCapture sur false. priorityint0.0Niveau de priorité de l’écouteur d’événement. La priorité est indiquée par un entier signé de 32 bits. Plus le nombre est élevé, plus la priorité est élevée. Tous les écouteurs dont la priorité correspond à n sont traités avant les écouteurs dotés de la priorité n -1. Les écouteurs dont la priorité est identique sont traités dans l’ordre où ils ont été ajoutés. La priorité par défaut est 0. useWeakReferenceBooleanfalseDétermine si la référence à l’écouteur est forte ou faible. Une référence forte (valeur par défaut) empêche le nettoyage de votre écouteur, Cela n’est pas le cas avec une référence faible.

Les fonctions de membres de niveau classe n’étant pas soumises au nettoyage, vous pouvez définir useWeakReference sur true pour ces fonctions. Si vous définissez useWeakReference sur true pour un écouteur correspondant à une fonction imbriquée interne, la fonction sera nettoyée et ne sera donc pas permanente. Si vous créez des références à la fonction interne (enregistrée dans une autre variable), celle-ci n’est pas nettoyée et reste permanente.

Enregistre un objet écouteur d’événement auprès d’un objet EventDispatcher afin que l’écouteur soit averti d’un événement. Vous pouvez enregistrer les écouteurs d’événement dans tous les nœuds de la liste d’affichage pour un type spécifique d’événement, de phase et de priorité.

Après l’enregistrement d’un écouteur d’événement, vous ne pouvez plus modifier sa priorité par d’autres appels de addEventListener(). Pour modifier la priorité d’un écouteur, vous devez d’abord appeler removeListener(). Vous pouvez ensuite réenregistrer l’écouteur avec le nouveau niveau de priorité.

N’oubliez pas qu’une fois l’écouteur enregistré, tous les prochains appels de addEventListener() avec une valeur type ou useCapture différente entraîneront la création d’un autre enregistrement d’écouteur. Si, par exemple, vous enregistrez un écouteur dans lequel la propriété useCapture est définie sur true, il écoute uniquement pendant la phase de capture. Si vous appelez addEventListener() à l’aide du même objet écouteur, mais en définissant useCapture sur false, vous obtenez deux écouteurs distincts : l’un qui écoute pendant la phase de capture et l’autre qui écoute pendant les phases cible et de propagation vers le haut (bubbling).

Il est impossible d’enregistrer un écouteur d’événement uniquement pour la phase cible ou la phase de propagation vers le haut. Ces deux phases sont associées pendant l’enregistrement car la propagation vers le haut s’applique uniquement aux ancêtres du nœud cible.

Si vous n’avez plus besoin d’un écouteur d’événements, supprimez-le en appelant removeEventListener(), afin d’éviter tout problème de mémoire. Les écouteurs d’événement ne sont pas automatiquement supprimés de la mémoire, car le nettoyeur de mémoire ne supprime pas l’écouteur tant que l’objet de distribution existe (à moins que le paramètre useWeakReference ne soit défini sur true).

Lors de la copie d’une occurrence d’EventDispatcher, les écouteurs d’événement qui lui sont associés ne sont pas pris en compte (si le nouveau nœud nécessite un écouteur d’événement, vous devez associer celui-ci après la création du nœud). Toutefois, si vous déplacez une occurrence d’EventDispatcher, les écouteurs d’événement qui lui sont associés la suivent.

Si un écouteur d’événement est enregistré sur un nœud alors qu’un événement est en cours de traitement sur ce nœud, l’écouteur n’est pas déclenché pendant la phase actuelle, mais il peut l’être pendant une phase ultérieure du flux d’événements, telle que la phase de propagation vers le haut (bubbling).

Si un écouteur d’événement est supprimé d’un nœud sur lequel un événement est en cours de traitement, il est cependant déclenché par les actions en cours. Une fois supprimé, l’écouteur d’événement n’est plus jamais appelé (à moins d’être réenregistré à des fins de traitement ultérieur).

analyze Collecte des statistiques sur les index de base de données et les stocke dans la base de données.Lorsque cette méthode est appelée alors que l’occurrence SQLConnection n’est pas connectée à une base de données (la propriété connected est false). IllegalOperationErrorflash.errors:IllegalOperationErrorsi l’opération échoue en mode d’exécution synchrone. SQLErrorflash.errors:SQLErrorresourceNameStringnullNom de la base de données ou de la table dont les indices doivent être analysés. Si la ressource spécifiée est une table dont le nom est unique parmi toutes les bases de données associées, seul le nom de la table doit être spécifié. Toutefois, un nom de table peut être spécifié au format [nom-base de données].[nom-table] afin d’éviter toute ambiguïté lorsque le nom de la table n’est pas unique. Si le paramètre resourceName est null (par défaut), tous les indices de toutes les bases de données associées sont analysés. responderflash.net:RespondernullObjet qui désigne les méthodes à appeler lorsque l’opération réussit ou échoue. En mode d’exécution asynchrone, si l’argument responder est null, un événement analyze ou error est distribué lorsque l’exécution se termine. Collecte des statistiques sur les index de base de données et les stocke dans la base de données. Ces statistiques peuvent alors être utilisées par l’optimiseur de requêtes (la partie du moteur de base de données qui détermine le moyen le plus efficace pour exécuter chaque instruction). Les statistiques permettent à l’optimiseur de requêtes d’améliorer ses choix quant aux index ou index à utiliser pour exécuter une requête particulière.

Si des indices ont été définis pour une base de données mais que la méthode analyze() n’a pas été appelée, l’exécution continue à utiliser ces indices pour exécuter les instructions. Toutefois, sans les informations statistiques supplémentaires générées par la méthode analyze(), il est possible que le moteur d’exécution ne choisisse pas l’index le plus efficace pour une requête particulière.

Lorsque les données d’une table changent (après des instructions INSERT, UPDATE ou DELETE), les indices associés à cette table changent également. Les informations statistiques générées par la méthode analyze() ne sont pas mises à jour automatiquement. Par conséquent, après un grand nombre de changements de données, un appel à la méthode analyze() peut être bénéfique. L’avantage apporté par un appel à la méthode analyze() dépend toutefois de plusieurs facteurs : le nombre d’indices définis sur une table, le rapport entre le nombre de lignes modifiées et le nombre total de lignes de la table, la quantité de variations existant dans les données indexées de la table et l’importance de la différence entre les données modifiées et les données d’origine.

Le paramètre resourceName indique si l’opération est exécutée sur les indices de toutes les bases de données attachées, d’une base de données spécifique ou d’une table spécifique.

A chaque appel de cette méthode, toutes les données statistiques précédemment créées sont purgées et recréées pour la base de données ou la table spécifiée dans le paramètre resourceName (ou toutes les tables de toutes les bases de données connectées si resourceName est null). Cette méthode peut être appelée à tout moment lorsque que la connexion à la base de données est établie. L’opération analyze() et ses données statistiques ne sont pas incluses dans une transaction. Toutefois, il est préférable de ne pas appeler analyze() lorsqu’une transaction est en cours dans la base de données (la propriété inTransaction est true). Cela est dû au fait que toutes les modifications de données, de schéma de table ou d’index exécutées dans la transaction mais non encore validées ne seront pas pris en compte par l’appel analyze() et les données d’analyze() seront obsolètes dès la validation de la transaction.

Pour supprimer les données statistiques créées avec la méthode analyze(), utilisez la méthode deanalyze().

deanalyze()analyzeflash.events:SQLEventDistribué lorsque l’opération se termine avec succès. Distribué lorsque l’opération se termine avec succès.errorflash.events:SQLErrorEventDistribué lorsque l’opération échoue en mode d’exécution asynchrone. Distribué lorsque l’opération échoue en mode d’exécution asynchrone.
attach Ajoute une autre base de données à l’occurrence SQLConnection, en lui attribuant le nom spécifié.Lorsque le paramètre name est une chaîne vide ("") ou null ArgumentErrorArgumentErrorLorsque la valeur spécifiée pour le paramètre reference n’est pas une occurrence de flash.filesystem.File ArgumentErrorArgumentErrorLorsque l’argument encryptionKey n’est pas null et sa propriété length n’est pas de 16 octets ArgumentErrorArgumentErrorLorsque le paramètre reference est null et l’argument encryptionKey n’est pas null ArgumentErrorArgumentErrorLorsque l’occurrence de SQLConnection n’est pas connectée à une base de données (la propriété connected est false) ; ou si une transaction est actuellement en cours (la propriété inTransaction est true). IllegalOperationErrorflash.errors:IllegalOperationErrorsi l’opération échoue en mode d’exécution synchrone. SQLErrorflash.errors:SQLErrornameStringNom utilisé pour identifier la nouvelle base de données attachée. Ce nom peut être utilisé dans les instructions SQL pour indiquer explicitement qu’une table appartient à la base de données spécifiée, lorsque le format [nom-base de données].[nom-table] est utilisé. Les noms « main » et « temp » sont réservés et ne peuvent pas être choisis. referenceObjectnullRéférence au fichier de base de données à associer (une occurrence flash.filesystem.File). Si la référence désigne un fichier qui n’existe pas, un nouveau fichier de base de données est créé ou une erreur est renvoyée selon la valeur spécifiée pour le paramètre openMode dans l’appel open() ou openAsync() qui effectuait la connexion à la base de données principale.

Si la valeur du paramètre est null, une base de données en mémoire est créée et associée.

responderflash.net:RespondernullObjet qui désigne les méthodes à appeler lorsque l’opération réussit ou échoue. En mode d’exécution asynchrone, si l’argument responder est null, un événement attach ou error est distribué lorsque l’exécution se termine. encryptionKeyflash.utils:ByteArraynullLa clé de chiffrement pour le fichier de base de données. Si l’appel de attach() crée une base de données, celle-ci est chiffrée et la clé spécifiée est utilisée comme clé de chiffrement. Si l’appel joint une base de données chiffrée existante, la valeur doit correspondre à la clé de chiffrement de la base de données ; dans le cas contraire, une erreur se produit. Si la base de données actuellement jointe n’est pas chiffrée, ou pour créer une base de données non chiffrée, la valeur doit être null (valeur par défaut).

Pour qu’une clé de chiffrement soit valide, sa longueur doit être de 16 octets. Une base de données en mémoire ne peut pas être chiffrée ; par conséquent, ce paramètre doit être null lorsque la valeur du paramètre reference est null.

Lorsque vous joignez une base de données chiffrée, si la clé de chiffrement fournie ne correspond pas à celle de la base de données, une exception est renvoyée. En mode d’exécution synchrone, une exception SQLError est renvoyée. En mode d’exécution asynchrone, un SQLErrorEvent est distribué et la propriété error de l’objet événement contient une occurrence de SQLError. Dans les deux cas, la propriété errorID de l’objet SQLError est 3138 (« Le fichier ouvert n’est pas un fichier de base de données »).

Le paramètre encryptionKey est disponible à partir de la version 1.5 d’AIR.

Ajoute une autre base de données à l’occurrence SQLConnection, en lui attribuant le nom spécifié. L’association d’une base de données permet d’utiliser cette dernière dans les instructions SQL exécutées sur l’occurrence SQLConnection.

Si une base de données est déjà associée à l’aide du nom spécifié, un appel à attach() entraîne une erreur. Toutefois, la même base de données peut être associée plusieurs fois à l’aide de noms uniques. Au maximum, dix bases de données peuvent être associées à une même occurrence SQLConnection.

Toute instruction SQL peut être exécutée sur une base de données connectée par la méthode attach() qui peut être exécutée sur la base de données principale (celle qui est connectée avec open() ou openAsync()). Une instruction SQL peut accéder aux tables de toute base de données associée à l’occurrence SQLConnection conjointe de l’instruction, y compris en accédant aux tables de plusieurs bases de données dans une même instruction. Lorsque le moteur d’exécution résout les noms de table en instruction, elle lance une recherche dans les bases de données de l’occurrence SQLConnection dans l’ordre dans lequel celles-ci ont été associées, en commençant par la base de données connectée à l’aide de la méthode open() ou openAsync(). Pour qualifier un nom de table de façon explicite, utilisez le nom de sa base de données (tel que spécifié dans le paramètre name de la méthode attach()) dans l’instruction.

Pour supprimer une base de données associée à l’aide de la méthode attach(), utilisez la méthode detach(). A la fermeture de l’occurrence SQLConnection (par un appel à la méthode close()), toutes les bases de données associées sont dissociées.

La base de données associée utilise le même mode d’exécution (synchrone ou asynchrone) que la base de données principale, selon que cette dernière a été connectée à l’aide de la méthode open() ou openAsync().

open()openAsync()detach()attachflash.events:SQLEventDistribué lorsque l’opération se termine avec succès. Distribué lorsque l’opération se termine avec succès.errorflash.events:SQLErrorEventDistribué lorsque l’opération échoue en mode d’exécution asynchrone. Distribué lorsque l’opération échoue en mode d’exécution asynchrone.
begin Commence une transaction, dans laquelle toutes les instructions SQL exécutées sur la ou les bases de données de la connexion sont regroupées.Lorsque cette méthode est appelée alors que l’occurrence SQLConnection n’est pas connectée à une base de données (la propriété connected est false). IllegalOperationErrorflash.errors:IllegalOperationErrorSi l’option spécifiée n’est pas l’une des constantes SQLTransactionLockType. ArgumentErrorArgumentErrorsi l’opération échoue en mode d’exécution synchrone. SQLErrorflash.errors:SQLErroroptionStringnullIndique la stratégie de verrouillage utilisée par la transaction. La valeur peut correspondre à l’une des constantes définies dans la classe SQLTransactionLockType :
  • SQLTransactionLockType.DEFERRED indique que le verrouillage n’est pas effectif avant la première opération de lecture ou d’écriture.
  • SQLTransactionLockType.EXCLUSIVE indique que le verrouillage est effectif dès que possible, et qu’aucune autre occurrence SQLConnection ne peut lire ou écrire dans la base de données.
  • SQLTransactionLockType.IMMEDIATE indique que le verrouillage est effectif dès que possible, et que les autres occurrences SQLConnection peuvent lire mais pas écrire dans la base de données.

La valeur par défaut (null) équivaut à SQLTransactionLockType.DEFERRED.

responderflash.net:RespondernullObjet qui désigne les méthodes à appeler lorsque l’opération réussit ou échoue. En mode d’exécution asynchrone, si l’argument responder est null, un événement begin ou error est distribué à la fin de l’exécution.
Commence une transaction, dans laquelle toutes les instructions SQL exécutées sur la ou les bases de données de la connexion sont regroupées.

Par défaut, chaque instruction SQL est exécutée dans sa propre transaction et celle-ci se termine lorsque l’exécution de l’instruction réussit ou échoue. La création d’une transaction à l’aide de la méthode begin() entraîne la création d’une nouvelle transaction manuelle. A partir de ce point, toutes les instructions SQL exécutées sur l’occurrence SQLConnection le sont dans la transaction, et toutes les actions ou modifications exécutées par les instructions peuvent être validées (rendues permanentes) ou annulées en un seul lot.

Pour terminer une transaction, appelez la méthode commit() ou rollback(), selon que les modifications apportées par les instructions de la transaction doivent devenir permanentes ou être annulées.

Les appels imbriqués à begin() sont ignorés. Vous pouvez créer des points de sauvegarde (semblables aux signets dans une transaction) en appelant la méthode setSavepoint(). Vous pouvez ensuite partiellement valider ou restaurer les instructions SQL en appelant la méthode releaseSavepoint() ou rollbackToSavepoint(). Toutefois, si une transaction est lancée en appelant la méthode begin(), les modifications ne sont pas définitivement validées dans la base de données tant que la méthode commit() n’est pas appelée.

Si la connexion à la base de données se ferme lorsqu’une transaction est en cours, AIR restaure automatiquement la transaction (remarque : pour AIR 1.1 et versions antérieures, une transaction en cours est automatiquement validée lorsqu’une connexion se ferme).

Une transaction n’est pas limitée aux exécutions d’instructions dans une seule base de données, mais peut comprendre des instructions exécutées sur d’autres bases de données associées.

L’exemple suivant explique comment exécuter plusieurs instructions SQL INSERT dans une transaction. Une ligne est tout d’abord ajoutée à la table « employees ». La clé primaire de la ligne nouvellement insérée est ensuite récupérée, puis utilisée en vue d’ajouter une ligne à la table « phoneNumbers » associée. 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. } } } L’exemple suivant explique comment exécuter plusieurs instructions SQL DELETE dans une transaction. Cette transaction permet de supprimer un employé. Les lignes correspondantes dans la table « phoneNumbers » sont tout d’abord supprimées. La ligne correspondant à l’employé est ensuite supprimée de la table « employees ». 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:SQLEventDistribué lorsque l’opération se termine. Distribué lorsque l’opération se termine.errorflash.events:SQLErrorEventDistribué lorsque l’opération échoue en mode d’exécution asynchrone. Distribué lorsque l’opération échoue en mode d’exécution asynchrone.
cancel Annule toutes les instructions SQL en cours d’exécution sur les bases de données connectées à l’occurrence SQLConnection.Lorsque cette méthode est appelée alors que l’occurrence SQLConnection n’est pas connectée à une base de données (la propriété connected est false). IllegalOperationErrorflash.errors:IllegalOperationErrorSi l’opération échoue en mode d’exécution synchrone. SQLErrorflash.errors:SQLErrorresponderflash.net:RespondernullObjet qui désigne les méthodes à appeler lorsque l’opération réussit ou échoue. En mode d’exécution asynchrone, si l’argument responder est null, un événement cancel ou error est distribué à la fin de l’exécution. Annule toutes les instructions SQL en cours d’exécution sur les bases de données connectées à l’occurrence SQLConnection. Cette méthode peut être utilisée pour interrompre des requêtes d’exécution longue ou des requêtes qui s’emballent.

Si des instructions s’exécutent lors de l’appel à cancel(), cette méthode annule les opérations des instructions et toutes les mises à jour ou transactions incomplètes sont annulées. Lorsque aucune instruction n’est en cours d’exécution, l’appel à cette méthode annule la transaction ouverte, sinon elle est sans effet.

flash.data.SQLStatementcancelflash.events:SQLEventDistribué lorsque l’opération se termine avec succès. Distribué lorsque l’opération se termine avec succès.errorflash.events:SQLErrorEventDistribué lorsque l’opération échoue en mode d’exécution asynchrone. Distribué lorsque l’opération échoue en mode d’exécution asynchrone.
close Ferme la connexion à la base de données en cours.Si l’opération échoue en mode d’exécution synchrone. SQLErrorflash.errors:SQLErrorresponderflash.net:RespondernullObjet qui désigne les méthodes à appeler lorsque l’opération réussit ou échoue. En mode d’exécution asynchrone, si l’argument responder est null, un événement close ou error est distribué à la fin de l’exécution. Ferme la connexion à la base de données en cours. Toutes les bases de données associées sont également dissociées.

Si une transaction est ouverte lors de l’appel de la méthode close(), la transaction est validée. Lorsqu’une occurrence SQLConnection est nettoyée, le moteur d’exécution appelle automatiquement close(), y compris si une application AIR est fermée alors qu’une occurrence SQLConnection est toujours connectée à une base de données.

closeflash.events:SQLEventDistribué lorsque l’opération se termine avec succès. Distribué lorsque l’opération se termine avec succès.errorflash.events:SQLErrorEventDistribué lorsque l’opération échoue en mode d’exécution asynchrone. Distribué lorsque l’opération échoue en mode d’exécution asynchrone.
commit Valide une transaction existante, en rendant permanentes toutes les actions effectuées par ses instructions dans la base de données.Lorsque la méthode est appelée alors que l’occurrence SQLConnection n’est pas connectée à une base de données (la propriété connected est false) ; ou si aucune transaction n’est actuellement ouverte (la propriété inTransaction est false). IllegalOperationErrorflash.errors:IllegalOperationErrorresponderflash.net:RespondernullObjet qui désigne les méthodes à appeler lorsque l’opération réussit ou échoue. En mode d’exécution asynchrone, si l’argument responder est null, un événement commit ou error est distribué lorsque l’exécution se termine. Valide une transaction existante, en rendant permanentes toutes les actions effectuées par ses instructions dans la base de données.

Il est possible de créer des points de sauvegarde intermédiaires, semblables aux signets dans une transaction, en appelant la méthode setSavepoint(). Les points de sauvegarde permettent de valider (via l’appel de la méthode releaseSavepoint()) ou de restaurer (via l’appel à la méthode rollbackToSavepoint()) certaines parties d’une transaction. Toutefois, si une transaction est ouverte à l’aide de la méthode begin(), les modifications ne sont pas définitivement enregistrées dans la base de données tant que l’ensemble de la transaction n’est pas validée via l’appel de la méthode commit().

Si une transaction utilise des points de sauvegarde, les instructions qui ont été restaurées à l’aide de la méthode rollbackToSavepoint() ne sont pas validées lorsque l’intégralité de la transaction est validée. Les instructions qui ont été validées à l’aide de la méthode releaseSavepoint(), ou dont les points de sauvegarde n’ont pas été publiés ou restaurés, sont validées dans la base de données.

begin()rollback()setSavepoint()releaseSavepoint()rollbackToSavepoint()commitflash.events:SQLEventDistribué lorsque l’opération se termine avec succès. Distribué lorsque l’opération se termine avec succès.errorflash.events:SQLErrorEventDistribué lorsque l’opération se termine avec un échec. Distribué lorsque l’opération se termine avec un échec.
compact Récupère tout l’espace non utilisé dans la base de données.Si la méthode est appelée alors que l’occurrence SQLConnection n’est pas connectée à une base de données (la propriété connected est false) ; ou si une transaction est actuellement en cours (la propriété inTransaction est true). IllegalOperationErrorflash.errors:IllegalOperationErrorSi l’opération échoue en mode d’exécution synchrone. SQLErrorflash.errors:SQLErrorresponderflash.net:RespondernullObjet qui désigne les méthodes à appeler lorsque l’opération réussit ou échoue. En mode d’exécution asynchrone, si l’argument responder est null, un événement compact ou error est distribué à la fin de l’exécution. Récupère tout l’espace non utilisé dans la base de données. Lorsqu’un objet (table, index ou déclencheur) est abandonné dans la base de données, il laisse un espace vide. Le fichier de bases de données est alors plus volumineux que nécessaire, mais cela peut accélérer les opérations INSERT. Avec le temps, les opérations INSERT et DELETE peuvent fragmenter la structure du fichier de la base de données, ce qui ralentit les accès disque au contenu de la base de données. Cette méthode compacte le fichier de base de données en éliminant les pages libres, en alignant les données de la table de façon contiguë et en nettoyant la structure du fichier de base de données.

L’opération compact() ne peut pas être exécutée sur un fichier d’une base de données associée, mais uniquement sur le fichier de la base de données principale (originale) ouvert par l’occurrence SQLConnection. Cette opération échoue si une transaction est active et n’a pas d’effet sur une base de données en mémoire.

compactflash.events:SQLEventDistribué lorsque l’opération se termine avec succès. Distribué lorsque l’opération se termine avec succès.errorflash.events:SQLErrorEventDistribué lorsque l’opération échoue en mode d’exécution asynchrone. Distribué lorsque l’opération échoue en mode d’exécution asynchrone.
deanalyze Supprime toutes les informations statistiques créées par un appel de la méthode analyze().Lorsque cette méthode est appelée alors que l’occurrence SQLConnection n’est pas connectée à une base de données (la propriété connected est false). IllegalOperationErrorflash.errors:IllegalOperationErrorSi l’opération échoue en mode d’exécution synchrone. SQLErrorflash.errors:SQLErrorresponderflash.net:RespondernullObjet qui désigne les méthodes à appeler lorsque l’opération réussit ou échoue. En mode d’exécution asynchrone, si l’argument responder est null, un événement deanalyze ou error est distribué à la fin de l’exécution. Supprime toutes les informations statistiques créées par un appel de la méthode analyze().

Les statistiques générées par la méthode analyze() occupant de l’espace dans une base de données, un appel à deanalyze() vous permet de récupérer cet espace, par exemple après l’abandon de plusieurs indices ou tables.

Cette opération n’est pas incluse dans une transaction active.

analyze()deanalyzeflash.events:SQLEventDistribué lorsque l’opération se termine avec succès. Distribué lorsque l’opération se termine avec succès.errorflash.events:SQLErrorEventDistribué lorsque l’opération échoue en mode d’exécution asynchrone. Distribué lorsque l’opération échoue en mode d’exécution asynchrone.
detach Dissocie une base de données supplémentaire précédemment associée à l’occurrence SQLConnection à l’aide de la méthode attach().Si l’argument name est null ou contient une chaîne vide (""). ArgumentErrorArgumentErrorSi cette méthode est appelée alors que l’occurrence SQLConnection n’est pas connectée à une base de données (la propriété connected est false) ou si une transaction est actuellement ouverte dans l’occurrence SQLConnection (la propriété inTransaction est true). IllegalOperationErrorflash.errors:IllegalOperationErrorSi l’opération échoue en mode d’exécution synchrone. SQLErrorflash.errors:SQLErrornameStringNom de la base de données à dissocier. responderflash.net:RespondernullObjet qui désigne les méthodes à appeler lorsque l’opération réussit ou échoue. En mode d’exécution asynchrone, si l’argument responder est null, un événement detach ou error est distribué à la fin de l’exécution. Dissocie une base de données supplémentaire précédemment associée à l’occurrence SQLConnection à l’aide de la méthode attach(). Il est possible d’associer le même fichier de base de données plusieurs fois à l’aide de noms différents et de dissocier une connexion à un fichier sans toucher aux autres connexions. Il est impossible de dissocier une base de données si la connexion contient une transaction ouverte (c’est-à-dire si la propriété inTransaction est définie sur true). attach()detachflash.events:SQLEventDistribué lorsque l’opération se termine avec succès. Distribué lorsque l’opération se termine avec succès.errorflash.events:SQLErrorEventDistribué lorsque l’opération échoue en mode d’exécution asynchrone. Distribué lorsque l’opération échoue en mode d’exécution asynchrone.getSchemaResult Permet d’accéder au résultat d’un appel à la méthode loadSchema().flash.data:SQLSchemaResult Permet d’accéder au résultat d’un appel à la méthode loadSchema(). La méthode getSchemaResult() se comporte comme une file d’attente de résultats premier entré-premier sorti. Chaque fois qu’un appel à la méthode loadSchema() se termine (chaque fois que l’événement schema est déclenché en mode d’exécution asynchrone), un nouvel objet SQLSchemaResult est ajouté à la file d’attente. Chaque fois que la méthode getSchemaResult() est appelée, le premier résultat (celui qui a été ajouté en premier à la file d’attente) est renvoyé et retiré de la file. Lorsqu’il ne reste plus aucun objet dans la file d’attente, getSchemaResult() renvoie null.

Lorsque la connexion à la base de données est fermée, la méthode renvoie null.

loadSchema()schéma, événement
loadSchema Charge les informations de schéma depuis la base de données connectées ou depuis l’une des bases de données associées.Lorsque la méthode est appelée alors que l’occurrence de SQLConnection n’est pas connectée à une base de données (la propriété connected est définie sur false). IllegalOperationErrorflash.errors:IllegalOperationErrorLorsque la valeur de l’argument type spécifié n’est pas l’un des types autorisés. ArgumentErrorArgumentErrorLors d’une utilisation en mode d’exécution synchrone, si une valeur non valide est fournie pour les paramètres name ou database. SQLErrorflash.errors:SQLErrortypeClassnullIndique le type de schéma à charger. Une valeur null (définie par défaut) indique que toutes les informations du schéma doivent être chargées. La définition d’une valeur non null pour ce paramètre limite l’étendue du schéma résultant, en supprimant les informations potentiellement inutiles des résultats et en rendant l’opération plus efficace. La valeur doit être le nom de l’une des classes suivantes :
  • SQLIndexSchema
  • SQLTableSchema
  • SQLTriggerSchema
  • SQLViewSchema
nameStringnullIndique quel schéma de ressources est chargé. La manière dont cette valeur est utilisée dépend de l’argument type spécifié. En général, il s’agit du nom d’un objet de base de données, tel que le nom d’une table, d’un index ou d’une vue, etc. Lorsqu’une valeur est spécifiée, seules les informations du schéma de l’objet de base de données portant le nom spécifié sont incluses dans le résultat.

Si la valeur spécifiée n’est pas valide, un événement error est déclenché (ou une erreur est renvoyée en mode d’exécution synchrone). La valeur du paramètre type doit correspondre au type de l’objet nommé pour que la valeur soit valide, selon la description de la méthode.

Si l’argument name est null, toutes les données de schéma du type spécifié sont incluses. Si la valeur spécifiée n’est pas valide, un événement error est déclenché.

databaseStringmainNom de la base de données dont le schéma est chargé. Si la valeur spécifiée n’est pas valide, un événement error est déclenché. includeColumnSchemaBooleantrueIndique si le résultat comprend les informations du schéma des colonnes des tables et des vues. responderflash.net:RespondernullObjet qui désigne les méthodes à appeler lorsque l’opération réussit ou échoue. En mode d’exécution asynchrone, si l’argument responder est null, un événement schema ou error est distribué à la fin de l’exécution.
Charge les informations de schéma depuis la base de données connectées ou depuis l’une des bases de données associées. Le schéma indique la structure des tables, des colonnes, des index et des déclencheurs de la base de données.

Pour accéder au schéma chargé, utilisez la méthode SQLConnection.getSchemaResult().

En mode d’exécution asynchrone, un événement schema est déclenché si l’opération réussit, ou un événement error est déclenché si elle échoue.

La combinaison des valeurs des paramètres type et name détermine le type de données du schéma généré par la méthode loadSchema(), et par conséquent les valeurs des propriétés de l’occurrence SQLSchemaResult générées. Le tableau suivant présente la liste des paires type et name valides et les données de schéma générées en résultat :

Argument typeArgument nameRécupère les données de schéma pour : nullnulltous les objets de la base de données (tables, vues, déclencheurs et indices)SQLIndexSchemanulltous les indices de la base de donnéesSQLIndexSchemanom de table validetous les indices définis dans la table spécifiéeSQLIndexSchemanom d’index valideindex spécifiéSQLTableSchemanulltoutes les tables de la base de donnéesSQLTableSchemanom de table validela table spécifiéeSQLTriggerSchemanulltous les déclencheurs de la base de donnéesSQLTriggerSchemanom de table validetous les déclencheurs associés à la table spécifiéeSQLTriggerSchemanom de vue validetous les déclencheurs associés à la vue spécifiée SQLTriggerSchemanom de déclencheur validele déclencheur spécifié SQLViewSchemanulltoutes les vues de la base de donnéesSQLViewSchemanom de vue validela vue spécifiée

Si la combinaison d’arguments type et name ne correspond pas à l’une des combinaisons spécifiées, un événement error est déclenché en mode d’exécution asynchrone ou une exception est renvoyée en mode d’exécution synchrone. Par exemple si l’argument type est SQLViewSchema et que l’argument name est le nom d’une table (au lieu de celui d’une vue), une erreur est renvoyée pour indiquer que la base de données ne contient pas d’objet présentant le type spécifié avec le nom spécifié.

Si la base de données est vide (elle ne contient pas de table, ni de vue, ni de déclencheur, ni d’indice), l’appel de la méthode loadSchema() déclenche une erreur.

getSchemaResult()schéma, événementflash.data.SQLIndexSchemaflash.data.SQLTableSchemaflash.data.SQLTriggerSchemaflash.data.SQLViewSchemaschemaflash.events:SQLEventDistribué lorsque l’opération se termine avec succès. Distribué lorsque l’opération se termine avec succès.errorflash.events:SQLErrorEventDistribué lorsque l’opération se termine avec un échec. Distribué lorsque l’opération se termine avec un échec.
openAsync Ouvre une connexion asynchrone au fichier de base de données à l’emplacement spécifié dans le système de fichiers, crée et ouvre un nouveau fichier de base de données à cet emplacement, ou crée et ouvre une base de données en mémoire.Lorsque l’occurrence SQLConnection a déjà une connexion établie avec une base de données (la propriété connected est true). IllegalOperationErrorflash.errors:IllegalOperationErrorLorsque la valeur spécifiée pour le paramètre reference n’est pas une occurrence de flash.filesystem.File ArgumentErrorArgumentErrorLorsque l’argument encryptionKey n’est pas null et sa propriété length n’est pas de 16 octets ArgumentErrorArgumentErrorLorsque le paramètre reference est null et l’argument encryptionKey n’est pas null ArgumentErrorArgumentErrorSi un paramètre pageSize non valide est spécifié. Cela comprend la transmission de la taille d’une page lorsque le mode est SQLMode.READ. ArgumentErrorArgumentErrorreferenceObjectnullEmplacement du fichier de base de données ouvert. Cette valeur doit être une occurrence flash.filesystem.File. Si la valeur du paramètre est null, une base de données est créée en mémoire et ouverte. openModeStringcreateIndique comment la base de données est ouverte. La valeur peut être l’une des constantes définies dans la classe SQLMode. La valeur par défaut est SQLMode.CREATE et indique que, si le fichier de base de données est introuvable à l’emplacement spécifié, il doit être créé. Si openMode est SQLMode.READ et que le fichier spécifié n’existe pas, un événement error est déclenché. Ce paramètre est ignoré lorsque le paramètre reference est null. responderflash.net:RespondernullObjet qui désigne les méthodes à appeler lorsque l’opération réussit ou échoue. Si l’argument responder est null, un événement open ou error est distribué à la fin de l’exécution. autoCompactBooleanfalseIndique si l’espace non utilisé dans la base de données est récupéré automatiquement. Ce paramètre n’est valide que pour la création d’un nouveau fichier de base de données ou pour l’ouverture d’un fichier de base de données dans lequel aucune table n’a été créée. Par défaut, l’espace récupéré lors de la suppression des données est conservé dans le fichier de base de données et réutilisé lorsque nécessaire. Si ce paramètre est défini sur true, la base de données récupère automatiquement l’espace non utilisé. Cela peut avoir un impact négatif sur les performances car un traitement supplémentaire est nécessaire à chaque opération d’écriture dans la base de données. De plus, les données de la base de données peuvent également se fragmenter avec le temps. Pour forcer la base de données à récupérer à tout moment l’espace non utilisé dans un fichier de base de données et à le défragmenter, utilisez la méthode compact().

Ce paramètre est ignoré lorsque le paramètre openMode est SQLMode.READ.

pageSizeint1024Indique la taille de la page (en octets) de la base de données. Ce paramètre n’est valide que pour la création d’un nouveau fichier de base de données ou pour l’ouverture d’un fichier de base de données dans lequel aucune table n’a été créée. La valeur doit être une puissance de deux supérieure ou égale à 512 et inférieure ou égale à 32768. La valeur par défaut est 1024 octets. Cette valeur ne peut être définie qu’avant la création des tables. Une fois que des tables ont été créées, la tentative de modification de cette valeur entraîne une erreur. encryptionKeyflash.utils:ByteArraynullLa clé de chiffrement pour le fichier de base de données. Si l’appel de openAsync() crée une base de données, celle-ci est chiffrée et la clé spécifiée est utilisée comme clé de chiffrement. Si l’appel ouvre une base de données chiffrée, la valeur doit correspondre à la clé de chiffrement de la base de données. Dans le cas contraire, une erreur se produit. Si la base de données en cours d’ouverture n’est pas chiffrée, la valeur doit être null (valeur par défaut). Dans le cas contraire, une erreur se produit.

Pour qu’une clé de chiffrement soit valide, sa longueur doit être de 16 octets. Une base de données en mémoire ne peut pas être chiffrée ; par conséquent, ce paramètre doit être null lorsque la valeur du paramètre reference est null.

Lors de l’ouverture d’une base de données chiffrée, si la clé de chiffrement fournie ne correspond pas à celle de la base de données, une exception SQLErrorEvent est renvoyée. La propriété error de l’objet événement contient une occurrence de SQLError. La propriété errorID de l’objet SQLError est 3138 (« Le fichier ouvert n’est pas un fichier de base de données »).

Le paramètre encryptionKey est disponible à partir de la version 1.5 d’AIR.

Ouvre une connexion asynchrone au fichier de base de données à l’emplacement spécifié dans le système de fichiers, crée et ouvre un nouveau fichier de base de données à cet emplacement, ou crée et ouvre une base de données en mémoire. Les opérations de création et d’ouverture de base de données, comme toutes les autres opérations exécutées avec cette occurrence SQLConnection (y compris l’exécution d’instructions et d’autres opérations exécutées par une occurrence SQLStatement associée à cette occurrence SQLConnection) sont exécutées de façon asynchrone lorsque la base de données est ouverte avec cette méthode. Pour exécuter des opérations de façon synchrone, ouvrez la connexion de la base de données à l’aide de la méthode open().

Après la connexion d’une base de données, utilisez une occurrence de SQLStatement pour exécuter les commandes SQL. Les opérations au niveau de la base de données, notamment le lancement ou la finalisation de transactions, ainsi que le chargement d’informations de schéma sont exécutées à l’aide de l’occurrence de SQLConnection.

Une base de données connectée avec la méthode openAsync() se voit automatiquement attribuer le nom de base de données « main ». Ce nom peut être utilisé pour qualifier explicitement les noms de table dans les instructions SQL utilisant le format [nom-base de données].[nom-table].

open()close()flash.data.SQLModeopenflash.events:SQLEventDistribué lorsque l’opération se termine avec succès. Distribué lorsque l’opération se termine avec succès.errorflash.events:SQLErrorEventDistribué lorsque l’opération échoue. La connexion ne résiste jamais à un échec d’opération. Distribué lorsque l’opération échoue.
open Ouvre une connexion synchrone au fichier de base de données à l’emplacement spécifié dans le système de fichiers, crée et ouvre un nouveau fichier de base de données à cet emplacement, ou crée et ouvre une base de données en mémoire.Lorsque l’occurrence SQLConnection a déjà une connexion établie avec une base de données (la propriété connected est true). IllegalOperationErrorflash.errors:IllegalOperationErrorSi l’opération échoue. La connexion ne résiste jamais à un échec d’opération. SQLErrorflash.errors:SQLErrorLorsque la valeur spécifiée pour le paramètre reference n’est pas une occurrence de flash.filesystem.File ArgumentErrorArgumentErrorLorsque l’argument encryptionKey n’est pas null et sa propriété length n’est pas de 16 octets ArgumentErrorArgumentErrorLorsque le paramètre reference est null et l’argument encryptionKey n’est pas null ArgumentErrorArgumentErrorSi un paramètre pageSize non valide est spécifié. Cela comprend la transmission de la taille d’une page lorsque le mode est SQLMode.READ. ArgumentErrorArgumentErrorreferenceObjectnullEmplacement du fichier de base de données ouvert. Cette valeur doit être une occurrence flash.filesystem.File. Si la valeur du paramètre est null, une base de données est créée en mémoire et ouverte. openModeStringcreateIndique comment la base de données est ouverte. La valeur peut être l’une des constantes définies dans la classe SQLMode. La valeur par défaut est SQLMode.CREATE et indique que, si le fichier de base de données est introuvable à l’emplacement spécifié, il doit être créé. Si openMode est SQLMode.READ et que le fichier spécifié n’existe pas, une erreur se produit. Ce paramètre est ignoré lorsque le paramètre reference est null. autoCompactBooleanfalseIndique si l’espace non utilisé dans la base de données est récupéré automatiquement. Ce paramètre n’est valide que pour la création d’un nouveau fichier de base de données ou pour l’ouverture d’un fichier de base de données dans lequel aucune table n’a été créée. Par défaut, l’espace récupéré lors de la suppression des données est conservé dans le fichier de base de données et réutilisé lorsque nécessaire. Si ce paramètre est défini sur true, la base de données récupère automatiquement l’espace non utilisé. Cela peut avoir un impact négatif sur les performances car un traitement supplémentaire est nécessaire à chaque opération d’écriture dans la base de données. De plus, les données de la base de données peuvent également se fragmenter avec le temps. Vous pouvez à tout moment forcer la base de données à récupérer l’espace non utilisé dans un fichier de base de données et défragmenter le fichier de base de données à l’aide la méthode compact().

Ce paramètre est ignoré lorsque le paramètre openMode est SQLMode.READ.

pageSizeint1024Indique la taille de la page (en octets) de la base de données. Ce paramètre n’est valide que pour la création d’un nouveau fichier de base de données ou pour l’ouverture d’un fichier de base de données dans lequel aucune table n’a été créée. La valeur doit être une puissance de deux supérieure ou égale à 512 et inférieure ou égale à 32768. La valeur par défaut est 1024 octets. Cette valeur ne peut être définie qu’avant la création des tables. Une fois que des tables ont été créées, la tentative de modification de cette valeur entraîne une erreur. encryptionKeyflash.utils:ByteArraynullLa clé de chiffrement pour le fichier de base de données. Si l’appel de open() crée une base de données, celle-ci est chiffrée et la clé spécifiée est utilisée comme clé de chiffrement. Si l’appel ouvre une base de données chiffrée, la valeur doit correspondre à la clé de chiffrement de la base de données. Dans le cas contraire, une erreur se produit. Si la base de données en cours d’ouverture n’est pas chiffrée, ou si vous souhaitez créer une base de données non chiffrée, la valeur doit être null (valeur par défaut) ; dans le cas contraire, une erreur se produit.

Pour qu’une clé de chiffrement soit valide, sa longueur doit être de 16 octets. Une base de données en mémoire ne peut pas être chiffrée ; par conséquent, ce paramètre doit être null lorsque la valeur du paramètre reference est null.

Lors de l’ouverture d’une base de données chiffrée, si la clé de chiffrement fournie ne correspond pas à celle de la base de données, une exception SQLError est renvoyée. Le cas échéant, la propriété errorID de l’objet SQLError est 3138 (« Le fichier ouvert n’est pas un fichier de base de données »).

Le paramètre encryptionKey est disponible à partir de la version 1.5 d’AIR.

Ouvre une connexion synchrone au fichier de base de données à l’emplacement spécifié dans le système de fichiers, crée et ouvre un nouveau fichier de base de données à cet emplacement, ou crée et ouvre une base de données en mémoire. Les opérations de création et d’ouverture de base de données, comme toutes les autres opérations exécutées avec cette occurrence SQLConnection (y compris l’exécution d’instructions et d’autres opérations exécutées par une occurrence SQLStatement associée à cette occurrence SQLConnection) sont exécutées de façon synchrone lorsque la base de données est ouverte avec cette méthode. Pour exécuter des opérations de façon asynchrone, ouvrez la connexion de la base de données à l’aide de la méthode openAsync().

Après la connexion d’une base de données, utilisez une occurrence de SQLStatement pour exécuter les commandes SQL. Les opérations au niveau de la base de données, notamment le lancement ou la finalisation de transactions, ainsi que le chargement d’informations de schéma sont exécutées à l’aide de l’occurrence de SQLConnection.

Une base de données connectée avec la méthode open() se voit automatiquement attribuer le nom de base de données « main ». Ce nom peut être utilisé pour qualifier explicitement les noms de table dans les instructions SQL qui utilisent le format [nom-base de données].[nom-table].

openAsync()close()flash.data.SQLModeopenflash.events:SQLEventDistribué lorsque l’opération se termine avec succès. Distribué lorsque l’opération se termine avec succès.
reencrypt Modifie la clé de chiffrement d’une base de donnée chiffrée.Lorsque la valeur de newEncryptionKey est null ou si sa propriété length n’est pas de 16 octets. ArgumentErrorArgumentErrorLorsque la connexion n’est pas ouverte ou si une transaction est ouverte. IllegalOperationErrorflash.errors:IllegalOperationErrorSi l’opération échoue en mode d’exécution synchrone. SQLErrorflash.errors:SQLErrornewEncryptionKeyflash.utils:ByteArrayUn ByteArray contenant la nouvelle clé de chiffrement de la base de données. Pour qu’une clé de chiffrement soit valide, sa longueur doit être de 16 octets. responderflash.net:RespondernullObjet qui désigne les méthodes à appeler lorsque l’opération réussit ou échoue. Si l’argument responder est null, un événement reencrypt ou error est distribué à la fin de l’exécution. Modifie la clé de chiffrement d’une base de donnée chiffrée. Cette méthode affecte uniquement la clé de chiffrement de la base de données principale (c’est-à-dire la base de données connectée à l’aide de la méthode open() ou openAsync()). Vous pouvez appeler reencrypt() uniquement sur une base de données ayant été chiffrée lors de sa création. Après avoir créé une base de données chiffrée, il est impossible de la déchiffrer. De la même manière, si une base de données non chiffrée est créée, celle-ci ne peut pas être chiffrée ultérieurement.

La nouvelle tentative de chiffrement est exécutée dans sa propre transaction. Si la nouvelle tentative de chiffrement est interrompue, la base de données restaure la transaction et la clé de chiffrement reste inchangée.

open()openAsync()attach()reencryptflash.events:SQLEventDistribué lorsque l’opération se termine avec succès. Distribué lorsque l’opération se termine avec succès.errorflash.events:SQLErrorEventDistribué lorsque l’opération échoue. Distribué lorsque l’opération échoue.
releaseSavepoint Cette méthode valide les opérations SQL effectuées depuis le point de sauvegarde le plus récent ou le point de sauvegarde désigné si un nom est spécifié.lorsque le paramètre name est une chaîne vide (""). ArgumentErrorArgumentErrorLorsque la méthode est appelée alors que l’occurrence SQLConnection n’est pas connectée à une base de données (la propriété connected est false) ; ou si aucune transaction n’est actuellement ouverte (la propriété inTransaction est false). IllegalOperationErrorflash.errors:IllegalOperationErrorSi l’opération échoue en mode d’exécution synchrone. SQLErrorflash.errors:SQLErrornameStringnullString Nom du point de sauvegarde à partir duquel toutes les opérations SQL doivent être validées. Si aucune valeur n’est fournie ou si ce paramètre est défini sur null (valeur par défaut), le point de sauvegarde non désigné nom le plus récent (créé via un appel de la méthode setSavepoint() dont le paramètre name n’a pas été pas défini) est utilisé. La valeur du paramètre name ne peut pas être une chaîne vide (""). responderflash.net:RespondernullResponder Objet qui désigne les méthodes à appeler lorsque l’opération réussit ou échoue. En mode d’exécution asynchrone, si l’argument responder est null, un événement releaseSavepoint ou error est distribué à la fin de l’exécution. Cette méthode valide les opérations SQL effectuées depuis le point de sauvegarde le plus récent ou le point de sauvegarde désigné si un nom est spécifié.

Notez que jusqu’à ce que l’ensemble de la transaction soit validée, les modifications ne sont pas définitivement enregistrées dans la base de données. Si la transaction est lancée à l’aide de la méthode begin(), vous devez appeler la méthode commit() pour valider l’ensemble de la transaction. Si la transaction est lancée via un appel de la méthode setSavepoint() alors que la propriété inTransaction est définie sur false, vous pouvez finaliser l’ensemble de la transaction soit en appelant la méthode commit() soit en appelant la méthode releaseSavepoint() ou rollbackToSavepoint() pour le premier point de sauvegarde de la transaction.

Si le code appelle la méthode rollback(), il supprime définitivement toutes les modifications effectuées dans la transaction, même si la méthode releaseSavepoint() est appelée avant la restauration de la transaction.

Si cette méthode est appelée sans paramètre (ou si le paramètre name est défini sur null), elle valide toutes les modifications dans la base de données depuis le point de sauvegarde non désigné le plus récent (point de sauvegarde le plus récent créé via un appel de méthode setSavepoint() dont le paramètre name n’a pas été défini). Par exemple, si la méthode setSavepoint() a été appelée trois fois, trois points de sauvegarde sont définis. L’appel de la méthode releaseSavepoint() au niveau de ce point valide les opérations SQL exécutées depuis le troisième point de sauvegarde (le plus récent).

Si le paramètre name est défini sur une valeur, cette méthode valide toutes les opérations SQL exécutées depuis le point de sauvegarde portant le nom spécifié. Si d’autres points de sauvegarde ont été créés plus récemment que le point de sauvegarde spécifié, les opérations exécutées après ces points de sauvegarde sont également validées.

Après la publication ou la restauration d’un point de sauvegarde, ce dernier, ainsi que les points de sauvegarde plus récents, sont supprimés. Si le code exécute d’autres opérations SQL après qu’un appel à releaseSavepoint() ou rollbackToSavepoint() supprime un point de sauvegarde, ces opérations appartiennent au point de sauvegarde restant le plus récent. (En d’autres termes, elles appartiennent au point de sauvegarde créé le plus récemment avant le point de sauvegarde supprimé.) S’il ne reste aucun point de sauvegarde, les opérations appartiennent à la transaction principale.

setSavepoint()rollbackToSavepoint()releaseSavepointflash.events:SQLEventDistribué lorsque l’opération se termine avec succès. Distribué lorsque l’opération se termine avec succès.errorflash.events:SQLErrorEventDistribué lorsque l’opération échoue en mode d’exécution asynchrone. Distribué lorsque l’opération échoue en mode d’exécution asynchrone.
removeEventListener Supprime un écouteur de l’objet EventDispatcher.typeStringType d’événement. listenerFunctionObjet écouteur à supprimer. useCaptureBooleanfalse Détermine si l’écouteur a été enregistré pendant la phase de capture ou pendant les phases cible et de propagation. Si l’écouteur a été enregistré pendant la phase de capture et pendant les phases cible et de propagation, il est nécessaire d’appeler removeEventListener() à deux reprises pour le supprimer. Appelez useCapture() une première fois en la définissant sur true, puis une seconde fois useCapture() en la définissant sur false. Supprime un écouteur de l’objet EventDispatcher. Si aucun écouteur correspondant n’est enregistré auprès de l’objet EventDispatcher, l’appel de cette méthode n’a aucun effet. rollbackToSavepoint Restaure toutes les opérations SQL depuis le point de sauvegarde le plus récent ou le point de sauvegarde désigné si un nom est spécifié.lorsque le paramètre name est une chaîne vide (""). ArgumentErrorArgumentErrorLorsque la méthode est appelée alors que l’occurrence SQLConnection n’est pas connectée à une base de données (la propriété connected est false) ; ou si aucune transaction n’est actuellement ouverte (la propriété inTransaction est false). IllegalOperationErrorflash.errors:IllegalOperationErrorSi l’opération échoue en mode d’exécution synchrone. SQLErrorflash.errors:SQLErrornameStringnullChaîne Nom du point de sauvegarde auquel lequel l’état de la base de données doit revenir. Si aucune valeur n’est fournie ou si ce paramètre est défini sur null (valeur par défaut), le point de sauvegarde non désigné nom le plus récent (créé via un appel de la méthode setSavepoint() dont le paramètre name n’a pas été défini) est utilisé. La valeur du paramètre name ne peut pas être une chaîne vide (""). responderflash.net:RespondernullResponder Objet qui désigne les méthodes à appeler lorsque l’opération réussit ou échoue. En mode d’exécution asynchrone, si l’argument responder est null, un événement rollbackToSavepoint ou error est distribué à la fin de l’exécution. Restaure toutes les opérations SQL depuis le point de sauvegarde le plus récent ou le point de sauvegarde désigné si un nom est spécifié.

Notez que si l’ensemble de la transaction est validée via l’appel de la méthode commit(), les modifications apportées à la transaction qui ne sont pas déjà restaurées à l’aide de la méthode rollbackToSavepoint() sont définitivement enregistrées dans la base de données. En outre, l’appel de la méthode rollback() supprime définitivement toutes les modifications, même si des points de sauvegarde individuels ont été publiés (validés) ou restaurés avant la restauration de la transaction.

Si cette méthode est appelée sans paramètre (ou si le paramètre name est défini sur null), elle restaure toutes les modifications effectuées dans la base de données depuis le point de sauvegarde non désigné le plus récent (l’appel le plus récent de la méthode setSavepoint() dont le paramètre name n’a pas été défini).

Si le paramètre name est défini sur une valeur, cette méthode restaure toutes les opérations SQL exécutées depuis le point de sauvegarde portant le nom spécifié. Si d’autres points de sauvegarde ont été créés plus récemment que le point de sauvegarde spécifié, les opérations exécutées depuis ces points de sauvegarde sont également restaurées.

Après la publication ou la restauration d’un point de sauvegarde, ce dernier, ainsi que les points de sauvegarde plus récents, sont supprimés. Si le code exécute d’autres opérations SQL après qu’un appel à releaseSavepoint() ou rollbackToSavepoint() supprime un point de sauvegarde, ces opérations appartiennent au point de sauvegarde restant le plus récent. (En d’autres termes, elles appartiennent au point de sauvegarde créé le plus récemment avant le point de sauvegarde supprimé.) S’il ne reste aucun point de sauvegarde, les opérations appartiennent à la transaction principale.

setSavepoint()releaseSavepoint()rollbackToSavepointflash.events:SQLEventDistribué lorsque l’opération se termine avec succès. Distribué lorsque l’opération se termine avec succès.errorflash.events:SQLErrorEventDistribué lorsque l’opération échoue en mode d’exécution asynchrone. Distribué lorsque l’opération échoue en mode d’exécution asynchrone.
rollback Annule une transaction existante créée avec la méthode begin(), ce qui signifie que toutes les modifications apportées à la transaction par les instructions SQL sont annulées.Lorsque la méthode est appelée alors que l’occurrence SQLConnection n’est pas connectée à une base de données (la propriété connected est false) ; ou si aucune transaction n’est actuellement ouverte (la propriété inTransaction est false). IllegalOperationErrorflash.errors:IllegalOperationErrorSi l’opération échoue en mode d’exécution synchrone. SQLErrorflash.errors:SQLErrorresponderflash.net:RespondernullObjet qui désigne les méthodes à appeler lorsque l’opération réussit ou échoue. En mode d’exécution asynchrone, si l’argument responder est null, un événement rollback ou error est distribué à la fin de l’exécution. Annule une transaction existante créée avec la méthode begin(), ce qui signifie que toutes les modifications apportées à la transaction par les instructions SQL sont annulées.

Les points de sauvegarde intermédiaires peuvent être marqués au sein d’une transaction via un appel de la méthode setSavepoint(). Les points de sauvegarde permettent de valider (via l’appel de la méthode releaseSavepoint()) ou de restaurer (via l’appel à la méthode rollbackToSavepoint()) certaines parties d’une transaction. Toutefois, l’appel de la méthode rollback() supprime définitivement toutes les modifications effectuées dans une transaction, même si des points de sauvegarde individuels ont été publiés (validés) avant la restauration de la transaction.

begin()commit()setSavepoint()releaseSavepoint()rollbackToSavepoint()rollbackflash.events:SQLEventDistribué lorsque l’opération se termine avec succès. Distribué lorsque l’opération se termine avec succès.errorflash.events:SQLErrorEventDistribué lorsque l’opération échoue en mode d’exécution asynchrone. Distribué lorsque l’opération échoue en mode d’exécution asynchrone.
setSavepoint Crée un point de sauvegarde, similaire à un signet dans une transaction de bases de données.lorsque le paramètre name est une chaîne vide (""). ArgumentErrorArgumentErrorLorsque la méthode est appelée alors que l’occurrence de SQLConnection n’est pas connectée à une base de données (la propriété connected est définie sur false). IllegalOperationErrorflash.errors:IllegalOperationErrorSi l’opération échoue en mode d’exécution synchrone. SQLErrorflash.errors:SQLErrornameStringnullString Nom du point de sauvegarde. Si aucune valeur n’est fournie ou si ce paramètre est défini sur null (valeur par défaut), l’appel suivant de la méthode releaseSavepoint() ou rollbackToSavepoint() dont le paramètre name n’est pas spécifié, valide ou restaure les opérations SQL exécutées depuis le point de sauvegarde non désigné.

Si le nom fourni est le même que celui d’un point de sauvegarde précédent, l’appel suivant de la méthode SQLConnection.releaseSavepoint() ou SQLConnection.rollbackToSavepoint(), valide ou restaure les modifications effectuées depuis le point de sauvegarde le plus récent portant ce nom.

La valeur du paramètre name ne peut pas être une chaîne vide ("").

responderflash.net:RespondernullResponder Objet qui désigne les méthodes à appeler lorsque l’opération réussit ou échoue. En mode d’exécution asynchrone, si l’argument responder est null, un événement setSavepoint ou error est distribué à la fin de l’exécution.
Crée un point de sauvegarde, similaire à un signet dans une transaction de bases de données. Un point de sauvegarde représente un point au sein d’une transaction. La série d’opérations SQL exécutées entre des points de sauvegarde peut être validée ou restaurées séparément des autres opérations à l’aide des méthodes releaseSavepoint() et rollbackToSavepoint(). L’utilisation d’un point de sauvegarde permet ainsi de traiter une série d’opérations SQL en tant que transaction imbriquée.

Lors de l’appel de la méthode setSavepoint(), si une transaction n’a pas encore été ouverte (via l’appel de la méthode begin()), l’appel de cette méthode lance la transaction et crée un point de sauvegarde au début de la transaction. Si une transaction est déjà ouverte, l’appel de la méthode setSavepoint() crée un point de sauvegarde dans la transaction.

Notez que jusqu’à ce que l’ensemble de la transaction soit validée, les modifications ne sont pas définitivement enregistrées dans la base de données. Si la transaction est lancée à l’aide de la méthode begin(), vous devez appeler la méthode commit() pour valider l’ensemble de la transaction. Si la transaction est lancée via un appel de la méthode setSavepoint() alors que la propriété inTransaction est définie sur false, vous pouvez finaliser l’ensemble de la transaction en appelant la méthode commit(). En outre, la transaction se termine automatiquement lorsque vous appelez la méthode releaseSavepoint() ou rollbackToSavepoint() pour le point de sauvegarde ayant déclenché la transaction.

Vous pouvez attribuer un nom à un point de sauvegarde en affectant une valeur au paramètre name. Vous pouvez ainsi restaurer ou valider toutes les modifications effectuées depuis ce point de sauvegarde spécifique. Si aucun nom n’est spécifié (valeur par défaut), un point de sauvegarde non désigné est créé.

Après la publication ou la restauration d’un point de sauvegarde, ce dernier, ainsi que les points de sauvegarde plus récents, sont supprimés. Si le code exécute d’autres opérations SQL après qu’un appel à releaseSavepoint() ou rollbackToSavepoint() supprime un point de sauvegarde, ces opérations appartiennent au point de sauvegarde restant le plus récent. (En d’autres termes, elles appartiennent au point de sauvegarde créé le plus récemment avant le point de sauvegarde supprimé.) S’il ne reste aucun point de sauvegarde, les opérations appartiennent à la transaction principale.

begin()releaseSavepoint()rollbackToSavepoint()commit()rollback()setSavepointflash.events:SQLEventDistribué lorsque l’opération se termine avec succès. Distribué lorsque l’opération se termine avec succès.errorflash.events:SQLErrorEventDistribué lorsque l’opération échoue en mode d’exécution asynchrone. Distribué lorsque l’opération échoue en mode d’exécution asynchrone.
autoCompact Indique si l’auto-compactage était activé lors de la création de la base de données en cours (valeur spécifiée pour le paramètre autoCompact dans l’appel à open() ou openAsync() qui a créé la base de données).Boolean Indique si l’auto-compactage était activé lors de la création de la base de données en cours (valeur spécifiée pour le paramètre autoCompact dans l’appel à open() ou openAsync() qui a créé la base de données). Si cette propriété est true, l’espace non utilisé est automatiquement supprimé du fichier de base de données après chaque opération d’écriture, ce qui réduit la taille du fichier. Si la propriété est false, l’espace précédemment occupé par les données supprimées est conservé dans le fichier de base de données et réutilisé lorsque nécessaire. Même lorsque autoCompact est false, vous pouvez forcer la base de données à récupérer l’espace non utilisé en appelant la méthode compact().

Si la propriété connected est false, cette propriété est définie sur false.

open()openAsync()
cacheSize Permet d’accéder à la taille du cache de cette connexion, représentant le nombre maximal de pages de disque de base de données pouvant être conservé en mémoire simultanément.uintLors d’une tentative de définition de cette propriété alors que l’occurrence SQLConnection n’est pas connectée à une base de données (la propriété connected est false) ou si une transaction est actuellement en cours (la propriété inTransaction est true). IllegalOperationErrorflash.errors:IllegalOperationError Permet d’accéder à la taille du cache de cette connexion, représentant le nombre maximal de pages de disque de base de données pouvant être conservé en mémoire simultanément. Chaque page utilise environ 1,5 Ko de mémoire (selon la valeur spécifiée pour le paramètre pageSize de l’appel de la méthode open() ou openAsync() qui a créé la base de données). La taille par défaut est 2 000. Si une application exécute des opérations UPDATE ou DELETE qui modifient un grand nombre de lignes d’une base de données, l’augmentation de la taille du cache peut améliorer la vitesse, mais accroît la consommation de mémoire. open()openAsync()columnNameStyle Indique comment les noms de colonne sont reportés dans le résultat d’une instruction SELECT.StringLors d’une tentative de définition de cette propriété alors que l’occurrence SQLConnection n’est pas connectée à une base de données (la propriété connected est false). IllegalOperationErrorflash.errors:IllegalOperationError Indique comment les noms de colonne sont reportés dans le résultat d’une instruction SELECT.

Les constantes définies dans la classe SQLColumnNameStyle représentent les valeurs possibles pour cette propriété :

  • SQLColumnNameStyle.LONG indique que les noms de colonne sont renvoyés au format [nom-table]_[nom-colonne].
  • SQLColumnNameStyle.SHORT spécifie que les noms de colonne sont donnés au format [nom-colonne]. Si plusieurs colonnes portent le même nom, une seule propriété portant ce nom est ajoutée à l’objet de résultats.
  • SQLColumnNameStyle.DEFAULT est la valeur par défaut. Lorsque cette valeur est utilisée, les noms de colonne du résultat sont mis en forme en fonction du nombre de tables portant des noms de colonnes similaires dans l’instruction SELECT. Si l’instruction SELECT ne comprend qu’une table, le format de nom court [nom-colonne] est utilisé, et si l’instruction SELECT contient plusieurs tables réunies, le format de nom long [nom-table]_[nom-colonne] est utilisé chaque fois que le nom de deux colonnes est identique.
flash.data.SQLColumnNameStyle
connected Indique si l’occurrence SQLConnection a une connexion établie avec un fichier de base de données.Boolean Indique si l’occurrence SQLConnection a une connexion établie avec un fichier de base de données. open()openAsync()close()inTransaction Indique si cette connexion est actuellement impliquée dans une transaction.Boolean Indique si cette connexion est actuellement impliquée dans une transaction. begin()commit()rollback()lastInsertRowID Dernier identifiant généré par une instruction SQL INSERT.Number Dernier identifiant généré par une instruction SQL INSERT. Un identifiant de ligne est utilisé pour identifier une ligne de façon unique dans un tableau au sein d’une base de données. La valeur est générée fréquemment par la base de données.

La valeur est zéro si aucune base de données n’est connectée ou si aucune instruction INSERT n’a été exécutée.

L’identifiant de ligne pour une seule exécution de l’instruction SQL INSERT peut être obtenu via la propriété lastInsertRowID de l’objet SQLResult renvoyé par la méthode getResult() de l’objet SQLStatement (lorsqu’il est appelé une fois que SQLStatement distribue son événement result).

Pour plus d’informations sur les clés primaires et les identifiants de ligne générés, voir les sections « CREATE TABLE » et « Expressions » dans l’annexe « Prise en charge de SQL dans les bases de données locales ».

flash.data.SQLResult.lastInsertRowIDflash.events.SQLUpdateEvent.rowID
pageSize Indique la taille de la page de base de données (en octets) spécifiée lors de la création de la base de données en cours (valeur spécifiée pour le paramètre pageSize dans l’appel à open() ou openAsync() qui a créé la base de données).uint Indique la taille de la page de base de données (en octets) spécifiée lors de la création de la base de données en cours (valeur spécifiée pour le paramètre pageSize dans l’appel à open() ou openAsync() qui a créé la base de données).

Si la propriété connected est false, la valeur de cette propriété est 0.

La taille de la page d’une base de données peut être modifiée (à l’aide des méthodes open() ou openAsync()) jusqu’à la création de la première table dans la base de données.

open()openAsync()
totalChanges Contient le nombre total de modifications de données effectuées depuis l’ouverture de la connexion à la base de données.Number Contient le nombre total de modifications de données effectuées depuis l’ouverture de la connexion à la base de données. En plus du suivi des modifications effectuées par les instructions INSERT, DELETE et UPDATE, cette valeur comprend les modifications dues aux déclencheurs.

Lorsque la connexion à la base de données est fermée, la valeur est réinitialisée sur 0. Lorsque l’occurrence de SQLConnection n’est pas connectée à une base de données, la valeur est 0.

flash.data.SQLResult.rowsAffected
SQLTriggerSchema Une occurrence SQLTriggerSchema fournit des informations décrivant un déclencheur spécifique dans une base de données.flash.data:SQLSchema Une occurrence SQLTriggerSchema fournit des informations décrivant un déclencheur spécifique dans une base de données. Elle contient le nom du déclencheur (propriété name), le nom de la table associée (propriété table) et l’instruction SQL utilisée pour créer le déclencheur (propriété sql).

Pour obtenir les informations du schéma des déclencheurs d’une base de données, utilisez la méthode SQLConnection.loadSchema() pour charger les informations du schéma, en vous assurant d’utiliser null ou SQLTriggerSchema comme valeur de l’argument type. Dans l’occurrence SQLSchemaResult résultante, la propriété triggers contient un tableau d’occurrences SQLTriggerSchema représentant les déclencheurs de la base de données.

En général, le code du développeur ne construit pas directement d’occurrences SQLTriggerSchema.

flash.data.SQLConnection.loadSchema()SQLTriggerSchema Crée une occurrence SQLTriggerSchema.databaseStringNom de la base de données associée. nameStringNom du déclencheur. sqlStringInstruction SQL utilisée pour créer le déclencheur. tableStringNom du déclencheur de la table associée. Crée une occurrence SQLTriggerSchema. En général, le code du développeur n’appelle pas directement le constructeur SQLTriggerSchema. Pour obtenir les informations de schéma d’une base de données, appelez la méthode SQLConnection.loadSchema(). table Nom de la table dans laquelle ce déclencheur est défini ou le nom de la vue si le déclencheur est défini dans une vue.String Nom de la table dans laquelle ce déclencheur est défini ou le nom de la vue si le déclencheur est défini dans une vue.
SQLStatement Une occurrence SQLStatement permet d’exécuter une instruction SQL sur une base de données SQL locale ouverte par une occurrence SQLConnection.flash.events:EventDispatcher Une occurrence SQLStatement permet d’exécuter une instruction SQL sur une base de données SQL locale ouverte par une occurrence SQLConnection.

Une occurrence SQLStatement est reliée à une occurrence SQLConnection en définissant l’occurrence SQLConnection comme valeur de la propriété sqlConnection de l’occurrence SQLStatement. La propriété text est renseignée par le véritable texte de l’instruction SQL à exécuter. Si nécessaire, les valeurs des paramètres de l’instruction SQL sont spécifiées à l’aide de la propriété parameters, et l’instruction est exécutée par un appel à la méthode execute().

Pour obtenir une description complète du dialecte SQL pris en charge par les bases de données SQL locales, consultez l’annexe Prise en charge de SQL dans les bases de données locales.

En mode d’exécution asynchrone, les méthodes execute() et next() sont exécutées en arrière-plan et l’exécution distribue des événements vers les écouteurs d’événements enregistrés ou vers une occurrence Responder spécifiée lorsque les opérations sont terminées ou échouent. En mode synchrone, les méthodes sont exécutées sur la thread principale de l’application, ce que signifie que aucun autre code ne s’exécute tant que les opérations de la base de données ne sont pas terminées. De plus, en mode synchrone, si la méthode échoue, l’exécution renvoie une exception au lieu de déclencher un événement d’erreur.

flash.data.SQLConnectionerror Distribué lorsqu’une erreur se produit au cours d’une opération.flash.events.SQLErrorEvent.ERRORflash.events.SQLErrorEvent Distribué lorsqu’une erreur se produit au cours d’une opération. execute()next()result Distribué lorsque l’opération d’un appel de méthode execute() ou next() se termine avec succès.flash.events.SQLEvent.RESULTflash.events.SQLEvent Distribué lorsque l’opération d’un appel de méthode execute() ou next() se termine avec succès. Une fois que l’événement result est déclenché, la méthode getResult() peut être appelée pour récupérer les résultats de l’instruction. execute()next()getResult()SQLStatement Crée une occurrence SQLStatement.Si le constructeur est appelé à partir d’un sandbox extérieur au sandbox de l’application principale. SecurityErrorSecurityError Crée une occurrence SQLStatement. cancel Annule l’exécution de cette instruction. Annule l’exécution de cette instruction. Comme SQLConnection.cancel(), cette méthode est utilisée pour interrompre une requête d’exécution longue ou pour annuler une requête qui n’est pas encore terminée. Toutefois, contrairement à SQLConnection.cancel(), cette méthode n’annule que la seule instruction. Si l’instruction n’est pas en cours d’exécution, l’appel à cette méthode ne donne rien.

Aucun événement n’est déclenché en réponse directe à l’achèvement de l’opération cancel(). Toutefois, une fois que l’opération cancel() est terminée et que l’exécution de l’instruction est annulée, l’occurrence SQLStatement déclenche un événement error qui indique que l’exécution de l’instruction (l’appel execute() ou next()) ne s’est pas terminée. Alternativement, si une valeur a été spécifiée pour le paramètre responder de l’appel execute() ou next(), la méthode du gestionnaire de fautes spécifiée est appelée. Dans les deux cas, l’occurrence SQLError transmise aux écouteurs présente une propriété errorID avec la valeur 3118 (Opération annulée).

clearParameters Efface tous les paramètres actuels. Efface tous les paramètres actuels. paramètresexecute Exécute l’instruction SQL de la propriété text sur la base de données connectée à l’objet SQLConnection dans la propriété sqlConnection.Si la propriété text est null ou contient une chaîne vide ("") ; si la propriété sqlConnection n’est pas définie ; si l’occurrence SQLConnection affectée à la propriété sqlConnection n’est pas connectée ; ou si l’instruction est en cours d’exécution. IllegalOperationErrorflash.errors:IllegalOperationErrorSi l’opération échoue en mode d’exécution synchrone. SQLErrorflash.errors:SQLErrorprefetchint-1Lorsque la propriété text de l’instruction est une instruction SELECT, cette valeur indique le nombre de lignes renvoyées en une seule fois par l’instruction. La valeur par défaut est -1, indiquant que toutes les lignes du résultat sont renvoyées en une seule fois. Ce paramètre est utilisé en combinaison avec la méthode next() pour diviser les grands jeux de résultats en jeux de données plus petits. L’utilisateur peut ainsi mieux percevoir les performances de l’application, car les résultats initiaux sont renvoyés plus rapidement et les opérations de traitement des résultats sont divisées.

Lorsque l’instruction SQL est une requête SELECT et qu’un argument prefetch supérieur à zéro est spécifié, l’instruction est censée s’exécuter jusqu’à ce que l’ensemble du jeu de résultats soit renvoyé ou que la méthode SQLStatement.cancel() ou SQLConnection.cancel() soit appelée. Notez que, le nombre de lignes du jeu de résultats étant inconnu au moment de l’exécution, le curseur de la base de données doit se déplacer au-delà de la dernière ligne du jeu de résultats pour que l’instruction soit considérée comme terminée. Lorsqu’un argument prefetch est spécifié dans un appel execute(), au moins une ligne de plus que le nombre total de lignes du jeu de résultats doit être demandée (par l’intermédiaire d’une valeur prefetch supérieure au nombre de lignes du jeu de résultats, ou par l’intermédiaire d’appels consécutifs à la méthode next()) avant que la valeur de la propriété complete de l’occurrence SQLResult résultante soit true.

responderflash.net:RespondernullObjet qui désigne les méthodes à appeler lorsque l’opération réussit ou échoue. En mode d’exécution asynchrone, si l’argument responder est null, un événement result ou error est distribué lorsque l’exécution se termine.
Exécute l’instruction SQL de la propriété text sur la base de données connectée à l’objet SQLConnection dans la propriété sqlConnection.

Si l’argument responder n’est pas null, l’objet Responder spécifié désigne les méthodes appelées pour gérer les résultats de l’opération. Lorsque l’argument responder est défini sur null en mode d’exécution asynchrone, un événement result est distribué si l’opération aboutit, ou un événement error si l’opération échoue.

Pour accéder aux résultats d’une instruction, notamment aux lignes de résultats d’une instruction SELECT ou à la clé primaire générée via la base de données d’une instruction INSERT, appelez la méthode getResult(). Ces résultats sont disponibles immédiatement après l’exécution de l’instruction en mode synchrone et lors de la distribution de l’événement result en mode asynchrone.

Chaque instruction doit être préparée (compilée) avant de pouvoir être exécutée. Lors du premier appel de la méthode execute() de l’occurrence SQLStatement, l’instruction est préparée par le moteur d’exécution. Une fois qu’une instruction est préparée, elle n’a pas besoin de l’être à nouveau sauf si la propriété text change. La définition d’une ou plusieurs valeurs de paramètres n’entraîne pas la nécessité de préparer de nouveau l’instruction.

L’exemple suivant démontre l’exécution d’une occurrence SQLStatement, avec des écouteurs d’événements pour déterminer le moment où l’exécution de l’instruction se termine ou échoue. 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."); } L’exemple suivant illustre l’exécution d’une occurrence de SQLStatement, avec un objet Responder pour indiquer quelles fonctions sont appelées lorsque l’exécution de l’instruction se termine ou échoue. 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:SQLEventDistribué lorsque l’exécution de l’instruction se termine avec succès ou lorsqu’une valeur d’argument prefetch est spécifiée et qu’une instruction SELECT renvoie une ou plusieurs lignes de données. Distribué lorsque l’exécution de l’instruction se termine avec succès ou lorsqu’une valeur d’argument prefetch est spécifiée et qu’une instruction SELECT renvoie une ou plusieurs lignes de données.errorflash.events:SQLErrorEventDistribué lorsque l’opération échoue en mode d’exécution asynchrone. Distribué lorsque l’opération échoue en mode d’exécution asynchrone.
getResult Permet d’accéder à un objet SQLResult contenant les résultats de l’exécution de l’instruction, y compris les lignes de résultat d’une instruction SELECT et d’autres informations sur l’exécution de toutes les instructions exécutées.Objet SQLResult contenant le résultat d’un appel à la méthode execute() ou next(). flash.data:SQLResult Permet d’accéder à un objet SQLResult contenant les résultats de l’exécution de l’instruction, y compris les lignes de résultat d’une instruction SELECT et d’autres informations sur l’exécution de toutes les instructions exécutées. En mode d’exécution asynchrone, les informations de résultat ne sont pas disponibles avant le déclenchement de l’événement result.

Lorsqu’une instruction SELECT est exécutée, si la méthode execute() est appelée avec l’argument prefetch par défaut défini sur -1, l’objet SQLResult renvoyé contient l’ensemble du jeu de résultats de la requête.

Lorsqu’un argument prefetch est spécifié pour un appel de méthode execute() ou next(), la méthode getResult() se comporte comme une file d’attente de résultats premier arrivé-premier sorti. Chaque fois que l’événement result est distribué, un nouvel objet SQLResult est ajouté à la file d’attente. Chaque fois que la méthode getResult() est appelée, le premier objet SQLResult (celui qui a été ajouté le premier à la file d’attente) est renvoyé et supprimé de la file. Lorsqu’il ne reste plus aucun objet SQLResult dans la file d’attente, getResult() renvoie null.

Notez qu’à moins d’être supprimés par un appel de getResult(), les objets SQLResult demeurent dans la file d’attente. Par exemple, si la méthode execute() est appelée plusieurs fois sans appel à getResult(), les objets SQLResult associés à chaque appel execute() restent dans la file d’attente.

execute()next()result, événement
next Récupère la partie suivante d’un jeu de résultats d’une instruction SELECT.Lorsque la méthode est appelée alors que l’instruction n’est pas en cours d’exécution (la propriété executing est false). IllegalOperationErrorflash.errors:IllegalOperationErrorsi l’opération échoue en mode d’exécution synchrone. SQLErrorflash.errors:SQLErrorprefetchint-1Lorsque la propriété text de l’instruction est une instruction SELECT, cette valeur indique le nombre de lignes renvoyées en une seule fois par l’instruction. La valeur par défaut est -1, indiquant que toutes les lignes du résultat sont renvoyées en une seule fois. L’utilisateur peut ainsi mieux percevoir les performances de l’application, car les résultats initiaux sont renvoyés plus rapidement et les opérations de traitement des résultats sont divisées. responderflash.net:RespondernullObjet qui désigne les méthodes à appeler lorsque l’opération réussit ou échoue. Si l’argument responder est null, un événement result ou error est distribué lorsque l’exécution se termine. Récupère la partie suivante d’un jeu de résultats d’instruction SELECT. Si le jeu de résultats ne contient plus aucune ligne, un événement result est distribué, mais aucun autre objet SQLResult n’est ajouté dans la file d’attente getResult().

En mode d’exécution asynchrone, si l’argument responder n’est pas null, l’objet Responder spécifié indique les méthodes appelées pour gérer les résultats de l’opération. Si l’argument responder est null, un événement result est distribué si l’opération est réussie, ou un événement error si l’opération échoue.

Cette méthode ne peut être appelée que si l’instruction est encore en exécution. Lorsque l’instruction est une requête SELECT et qu’un argument prefetch supérieur à zéro est spécifié, l’instruction est censée s’exécuter jusqu’à ce que l’ensemble du jeu du résultats soit renvoyé ou que la méthode SQLStatement.cancel() ouSQLConnection.cancel() soit appelée.

L’exemple suivant démontre l’exécution d’une occurrence SQLStatement, indiquant explicitement que seules les 10 premières lignes du jeu de résultats doivent être renvoyées lors du premier renvoi des résultats. Le code vérifie la propriété complete de SQLResult et, si toutes les lignes n’ont pas été récupérées, appelle la méthode next(). 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:SQLEventDistribué lorsque l’exécution de l’instruction se termine avec succès ou lorsqu’une valeur d’argument prefetch est spécifiée et que l’appel next() renvoie une ou plusieurs lignes de données. Distribué lorsque l’exécution de l’instruction se termine avec succès ou lorsqu’une valeur d’argument prefetch est spécifiée et que l’appel next() renvoie une ou plusieurs lignes de données.errorflash.events:SQLErrorEventDistribué lorsque l’opération échoue en mode d’exécution asynchrone. Distribué lorsque l’opération échoue en mode d’exécution asynchrone.
executing Indique si l’instruction est en cours d’exécution.Boolean Indique si l’instruction est en cours d’exécution.

Cette propriété est true si la méthode execute() a été appelée et que tous les résultats n’ont pas été renvoyés de la base de données.

execute()
itemClass Indique une classe (type de données) utilisée pour chaque ligne renvoyée en tant que résultat de l’exécution de l’instruction.Class Indique une classe (type de données) utilisée pour chaque ligne renvoyée en tant que résultat de l’exécution de l’instruction.

Par défaut, chaque ligne renvoyée par une instruction SELECT est créée en tant qu’occurrence Object, avec les noms de colonnes du jeu de résultats correspondant au nom des propriétés de l’objet, et la valeur de chaque colonne correspondant à la valeur de sa propriété associée.

En spécifiant la classe de la propriété itemClass, chaque ligne renvoyée par une instruction SELECT exécutée par cette occurrence SQLStatement et créée sous la forme d’une occurrence de la classe désignée. Chaque propriété de l’occurrence itemClass se voit affecter la valeur de la colonne portant le même nom que la propriété.

Toute classe affectée à cette propriété doit avoir un constructeur qui ne requiert aucun paramètre. En outre, la classe doit avoir une seule propriété pour chaque colonne renvoyée par l’instruction SELECT. Le fait qu’une colonne de la liste SELECT ne présente pas de nom de propriété correspondant dans la classe itemClass est considéré comme une erreur.

Le code suivant illustre l’utilisation de la propriété itemClass pour que l’exécution crée des occurrences d’une classe personnalisée à partir des résultats de l’instruction SQL SELECT. // 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 Joue le rôle de tableau associatif dans lequel vous ajoutez des valeurs pour les paramètres spécifiés dans la propriété text de l’instruction SQL.Object Joue le rôle de tableau associatif dans lequel vous ajoutez des valeurs pour les paramètres spécifiés dans la propriété text de l’instruction SQL. Les clés du tableau sont les noms des paramètres. Si un paramètre sans nom est spécifié dans la propriété text de l’instruction, sa clé est l’index du paramètre.

Dans le texte d’une instruction SQL, un paramètre est indiqué avec l’un des caractères suivants : « ? », « : » ou « @ ».

Les jetons « : » et « @ » indiquent un paramètre nommé ; les caractères qui suivent le jeton désignent le nom du paramètre.

Par exemple, dans l’instruction SQL suivante, un paramètre nommé firstName est spécifié à l’aide du caractère « : » :

SELECT FROM employees WHERE firstName = :firstName

Le jeton « ? » indique un paramètre indexé (numéroté) ; chaque paramètre se voit automatiquement attribué un index en fonction de la séquence des paramètres du texte de l’instruction. Les valeurs d’index des paramètres sont de base zéro. En d’autres termes, le premier index de paramètre est 0.

Les paramètres autorisent la substitution avec type de valeurs inconnues au moment de la construction de l’instruction SQL. L’utilisation des paramètres est le seul moyen de garantir la classe de stockage d’une valeur transmise à la base de données. Lorsque des paramètres ne sont pas utilisés, toutes les valeurs sont converties de leur représentation texte en une classe de stockage en fonction de l’affinité du type de la colonne associée. Pour plus d’informations sur les classes de stockage et l’affinité des colonnes, voir la section « Prise en charge des types de données » dans l’annexe « Prise en charge de SQL dans les bases de données locales ».

Les paramètres sont également utilisés comme mesure de sécurité pour empêcher une technique malveillante appelée attaque par injection de code SQL. Dans une attaque par injection de code SQL, l’utilisateur entre du code SQL dans un emplacement accessible (par exemple dans un champ de saisie de données). Si le code de l’application construit une instruction SQL en concaténant directement la saisie de l’utilisateur dans le texte SQL, le code SQL saisi par l’utilisateur est exécuté sur la base de données. L’exemple suivant illustre la concaténation de la saisie de l’utilisateur dans le texte SQL. N’utilisez pas cette technique :

// 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;

L’utilisation des paramètres d’instruction à la place de la concaténation des valeurs entrées par l’utilisateur dans le texte d’une instruction empêche les attaques par injection de code SQL car les valeurs des paramètres sont traitées explicitement sous forme de valeurs substituées au lieu de devenir une partie du texte de l’instruction littérale. L’exemple suivant est l’alternative recommandée :

// 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;

Toutes les valeurs des paramètres doivent être définies avant l’exécution de l’instruction. Les valeurs des paramètres spécifiés dans le tableau parameters sont liées (c’est-à-dire combinées avec le texte de l’instruction) lorsque la méthode execute() est appelée. Après l’appel de la méthode execute(), les modifications suivantes des valeurs ne sont pas appliquées à l’instruction en exécution. Toutefois, lors des appels consécutifs à execute(), les valeurs modifiées sont utilisées. Si le texte de l’instruction comprend un paramètre pour lequel aucune valeur n’a été spécifiée dans la propriété parameters, une erreur se produit.

Pour effacer toutes les valeurs de paramètres de la propriété parameters, utilisez la méthode clearParameters().

L’exemple suivant illustre l’utilisation d’un paramètre nommé, :firstName, dans une instruction SQL. // employees is a SQLStatement instance employees.text = "SELECT FROM employees WHERE first = :firstName"; employees.parameters[":firstName"] = "Sam"; employees.execute(); L’exemple suivant explique comment utiliser un paramètre sans nom dans une instruction SQL. // employees is a SQLStatement instance employees.text = "SELECT FROM employees WHERE first = ?"; employees.parameters[0] = "Sam"; employees.execute();
textclearParameters()
sqlConnection Objet SQLConnection qui gère la connexion à la ou aux bases de données dans lesquelles l’instruction est exécutée.flash.data:SQLConnectionLors d’une tentative de modification de la valeur de cette propriété alors que l’instruction est en cours d’exécution. IllegalOperationErrorflash.errors:IllegalOperationError Objet SQLConnection qui gère la connexion à la ou aux bases de données dans lesquelles l’instruction est exécutée. text Véritable texte SQL de l’instruction.StringLors d’une tentative de modification de la valeur de la propriété text alors que l’instruction est en cours d’exécution. IllegalOperationErrorflash.errors:IllegalOperationError Véritable texte SQL de l’instruction.

Le texte peut être n’importe quel code SQL pris en charge. Pour obtenir une description complète du dialecte SQL pris en charge par les bases de données SQL locales, consultez l’annexe « Prise en charge de SQL dans les bases de données locales ».

SQLMode Cette classe contient les constantes représentant les valeurs possibles du paramètre openMode des méthodes SQLConnection.open() et SQLConnection.openAsync().Object Cette classe contient les constantes représentant les valeurs possibles du paramètre openMode des méthodes SQLConnection.open() et SQLConnection.openAsync(). flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()CREATE Indique que la connexion est ouverte pour les mises à jour et qu’un fichier de base de données est créé lorsque le fichier spécifié n’existe pas.createString Indique que la connexion est ouverte pour les mises à jour et qu’un fichier de base de données est créé lorsque le fichier spécifié n’existe pas. Dans ce mode, la lecture et l’écriture sont autorisées dans la base de données. Si la base de données n’existe pas, une base de données est créée avant la fin de l’opération. flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()READ Indique que la connexion est ouverte en mode lecture seule.readString Indique que la connexion est ouverte en mode lecture seule. Dans ce mode, l’écriture n’est pas autorisée dans la base de données. Si la base de données n’existe pas, l’opération d’ouverture échoue. flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()UPDATE Indique que la connexion est ouverte pour les mises à jour mais que aucun nouveau fichier de base de données n’est créé lorsque le fichier spécifié n’existe pas.updateString Indique que la connexion est ouverte pour les mises à jour mais que aucun nouveau fichier de base de données n’est créé lorsque le fichier spécifié n’existe pas. Dans ce mode, la lecture et l’écriture sont autorisées dans la base de données. Si la base de données n’existe pas, l’opération d’ouverture échoue. flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()EncryptedLocalStore La classe EncryptedLocalStore fournit un mécanisme permanent de stockage de données chiffrées.Object La classe EncryptedLocalStore fournit un mécanisme permanent de stockage de données chiffrées.

Prise en charge du profil AIR : cette fonctionnalité est prise en charge sur tous les systèmes d’exploitation de bureau, mais ne l’est pas sur les périphériques mobiles ou les périphériques AIR pour TV. Vous pouvez tester la prise en charge lors de l’exécution à l’aide de la propriété EncryptedLocalStore.isSupported. Voir Prise en charge du profil AIR pour plus d’informations sur la prise en charge de l’API dans plusieurs profils.

AIR fournit un magasin local chiffré pour chaque application AIR installée sur l’ordinateur de l’utilisateur. Vous pouvez ainsi enregistrer et extraire les données stockées sur le disque dur local de l’utilisateur dans un format chiffré, que d’autres utilisateurs ne peuvent pas déchiffrer facilement. Un magasin local chiffré distinct est utilisé pour chaque application AIR et chacune d’elle fait appel à un magasin local chiffré pour chaque compte utilisateur de l’ordinateur.

Utilisez le magasin local chiffré pour mettre en mémoire cache des informations à sécuriser, telles que les informations de connexion aux services Web. Le magasin local chiffré convient au stockage des informations devant rester confidentielles. En revanche, il ne permet pas de protéger les données des autres processus exécutés sous le même compte utilisateur. Il n’est donc pas approprié pour protéger les données secrètes d’une application, notamment les mots de passe DRM ou les clés de chiffrement.

Pour associer le magasin local chiffré à chaque application et chaque utilisateur, AIR utilise DPAPI sous Windows, KeyChain sous Mac OS et KeyRing ou KWallet sous Linux. Le magasin local chiffré utilise un cryptage AES-CBC de 128 bits.

Les informations conservées dans le magasin local chiffré ne sont disponibles que pour le contenu de l’application AIR dans le sandbox de sécurité de l’application.

Si vous mettez à jour une application AIR, la version mise à jour conserve l’accès à toutes les données existantes dans le magasin local chiffré, sauf dans les cas suivants :

  • Les éléments ont été ajoutés avec le paramètre stronglyBound défini sur true.
  • La version existante et la version mise à jour sont toutes deux publiées avant AIR 1.5.3, et la mise à jour est signée à l’aide d’une signature de migration.

Restrictions du magasin local chiffré

Les données contenues dans le magasin local chiffré sont protégées par les informations d’identification du compte du système d’exploitation de l’utilisateur. Les autres entités ne peuvent pas accéder aux données contenues dans le magasin, à moins qu’elles soient en mesure d’utiliser les informations d’identification de cet utilisateur pour se connecter. Il est néanmoins possible que d’autres applications exécutées par un utilisateur authentifié puissent accéder aux données. Par conséquent, les données que votre application souhaite garder secrètes, telles que les clés utilisées pour l’obtention de licences ou la gestion des droits numériques, ne sont pas sécurisées. Le magasin local chiffré n’est pas un emplacement approprié pour le stockage de ces informations. Il convient uniquement au stockage des données privées d’un utilisateur, telles que les mots de passe.

Les données contenues dans le magasin local chiffré peuvent être perdues pour plusieurs raisons. Par exemple, l’utilisateur n’a pas pu désinstaller l’application et supprimer le fichier chiffré. Ou l’ID de l’éditeur a été modifié suite à une mise à jour. Par conséquent, le magasin local chiffré doit être considéré comme une mémoire cache privée et non comme un emplacement de stockage permanent.

Le paramètre stronglyBound est déconseillé et ne doit pas être défini sur true. Définir ce paramètre sur true ne fournit pas de protection supplémentaire aux données. Par ailleurs, l’accès aux données est perdu à chaque mise à jour de l’application, même si l’ID de l’éditeur reste inchangé.

Le magasin local chiffré peut s’exécuter plus lentement si les données stockées dépassent 10 Mo.

Lorsque vous désinstallez une application AIR, le programme de désinstallation ne supprime pas les données stockées dans le magasin local chiffré.

Voici les normes de bonne pratique concernant l’utilisation du magasin local chiffré :

  • Utilisez le magasin local chiffré pour stocker des données utilisateur sensibles, telles que les mots de passe (en définissant stronglyBound sur false).
  • N’utilisez pas le magasin local chiffré pour stocker les données secrètes d’une application, notamment les clés DRM ou les jetons de licence.
  • Faites en sorte que votre application recrée les données stockées dans le magasin local chiffré en cas de perte, notamment en invitant l’utilisateur à saisir de nouveau les informations d’identification de son compte, si besoin est.
  • N’utilisez pas le paramètre stronglyBound.
  • Si vous définissez stronglyBound sur true, ne migrez pas les éléments stockés lors d’une mise à jour, mais recréez les données après la mise à jour.
  • Stockez uniquement de petites quantités de données. Si vous souhaitez stocker de grandes quantités de données, utilisez une base de données SQL AIR avec cryptage.

Les éléments du magasin local chiffré sont identifiés par une chaîne. Tous les éléments sont stockés sous forme de données de tableau d’octets.

Les données du magasin local chiffré sont placées dans un sous-répertoire du répertoire de données de l’application de l’utilisateur ; le chemin du sous-répertoire est Adobe/AIR/ELS/suivi de l’ID de l’application.

Le code suivant stocke une chaîne dans le magasin local chiffré, la récupère, puis la supprime : 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 Données correspondant au nom spécifié.La valeur name est null ou une chaîne vide. ArgumentErrorArgumentErrorDonnées ByteArray. S’il n’y a pas de données pour le paramètre name fourni, la méthode renvoie null. flash.utils:ByteArraynameStringNom de l’élément dans le magasin local chiffré. Données correspondant au nom spécifié.

Si un élément n’existe pas avec le paramètre name spécifié, cette méthode renvoie null.

removeItem Supprime l’élément avec le nom donné du magasin local chiffré.La valeur name est null ou une chaîne vide. ArgumentErrorArgumentErrornameStringNom de l’élément dans le magasin local chiffré. Supprime l’élément avec le nom donné du magasin local chiffré. reset Efface tout le stockage local crypté, en supprimant toutes les données. Efface tout le stockage local crypté, en supprimant toutes les données. setItem Enregistre un objet ByteArray sous le nom spécifié.La valeur name est null ou une chaîne vide. ArgumentErrorArgumentErrornameStringNom de l’élément dans le magasin local chiffré. dataflash.utils:ByteArrayDonnées. stronglyBoundBooleanfalse(déconseillé) Le paramètre stronglyBound doit être défini sur false (valeur par défaut). S’il est défini sur true, l’élément stocké ne pourra pas être récupéré si l’un des fichiers de l’application est endommagé. Par exemple, si un utilisateur installe une mise à jour de votre application, l’application mise à jour n’est pas en mesure de lire les données fortement liées précédemment écrites dans le magasin local chiffré. Enregistre un objet ByteArray sous le nom spécifié. isSupported La propriété isSupported est définie sur true si la classe EncryptedLocalStore est prise en charge sur la plate-forme actuelle ; dans le cas contraire, elle est définie sur false.BooleanIndique si le magasin local chiffré est disponible sur le système client. La propriété isSupported est définie sur true si la classe EncryptedLocalStore est prise en charge sur la plate-forme actuelle ; dans le cas contraire, elle est définie sur false.
SQLIndexSchema Une occurrence SQLIndexSchema fournit des informations décrivant un index spécifique dans une base de données.flash.data:SQLSchema Une occurrence SQLIndexSchema fournit des informations décrivant un index spécifique dans une base de données. Les informations disponibles incluent le nom de la table associée (la propriété table), l’instruction SQL utilisée pour créer l’index (la propriété sql) et le nom de l’index (la propriété name).

Pour obtenir des informations de schéma d’index pour une base de données, utilisez la méthode SQLConnection.loadSchema() pour charger les informations du schéma, en vous assurant d’utiliser null ou SQLIndexSchema comme valeur d’argument type. Dans l’occurrence SQLSchemaResult résultante, la propriété indices contient un tableau d’occurrences SQLIndexSchema représentant les index de la base de données.

En général, le code du développeur ne construit pas directement d’occurrences SQLIndexSchema.

flash.data.SQLConnection.loadSchema()SQLIndexSchema Crée une occurrence SQLIndexSchema.databaseStringNom de la base de données associée. nameStringNom de l’index. sqlStringInstruction SQL utilisée pour créer cet index. tableStringNom de la table à laquelle cet index est attaché. Crée une occurrence SQLIndexSchema. En général, le code du développeur n’appelle pas directement le constructeur SQLIndexSchema. Pour obtenir les informations de schéma d’une base de données, appelez la méthode SQLConnection.loadSchema(). flash.data.SQLConnection.getSchemaResult()flash.data.SQLSchemaResult.indicestable Nom de la table à laquelle cet index est attaché.String Nom de la table à laquelle cet index est attaché.
SQLTableSchema Une occurrence SQLTableSchema fournit des informations décrivant une table spécifique dans une base de données.flash.data:SQLSchema Une occurrence SQLTableSchema fournit des informations décrivant une table spécifique dans une base de données. Elle contient le nom de la table (la propriété name), l’instruction SQL utilisée pour créer la table (la propriété sql) et des informations sur les colonnes de la table (la propriété columns).

Pour obtenir les informations du schéma des tables d’une base de données, utilisez la méthode SQLConnection.loadSchema() pour charger les informations du schéma, en vous assurant d’utiliser null ou SQLTableSchema comme valeur d’argument type. Dans l’occurrence SQLSchemaResult résultante, la propriété tables contient un tableau d’occurrences SQLTableSchema représentant les tables de la base de données.

En général, le code du développeur ne construit pas directement d’occurrences SQLTableSchema.

flash.data.SQLConnection.loadSchema()flash.data.SQLColumnSchemaSQLTableSchema Crée une occurrence SQLTableSchema.databaseStringNom de la base de données associée. nameStringNom de la table. sqlStringInstruction SQL utilisée pour créer la table. columnsArrayTableau d’occurrences SQLColumnSchema décrivant les colonnes de cette table. Crée une occurrence SQLTableSchema. En général, le code du développeur n’appelle pas directement le constructeur SQLTableSchema. Pour obtenir les informations de schéma d’une base de données, appelez la méthode SQLConnection.loadSchema(). flash.data.SQLConnection.getSchemaResult()flash.data.SQLSchemaResult.tablescolumns Tableau d’occurrences SQLColumnSchema contenant les informations du schéma relatif aux colonnes de cette table.Array Tableau d’occurrences SQLColumnSchema contenant les informations du schéma relatif aux colonnes de cette table. Si l’appel SQlConnection.loadSchema() indique que les informations de colonnes doivent être exclues du résultat, la propriété columns est un tableau vide (un tableau dont la propriété length est 0). flash.data.SQLColumnSchemaflash.data.SQLConnection.loadSchema()
SQLResult La classe SQLResult fournit un accès aux données renvoyées en réponse à l’exécution d’une instruction SQL (une occurrence SQLStatement).Object La classe SQLResult fournit un accès aux données renvoyées en réponse à l’exécution d’une instruction SQL (une occurrence SQLStatement).

L’occurrence SQLResult d’une instruction SQL est accédée par un appel à la méthode SQLStatement.getResult() ou sous forme d’argument transmis au gestionnaire de résultats d’une occurrence Responder spécifiée dans un appel à SQLStatement.execute() ou SQLStatement.next(). En général, le code du développeur ne construit pas directement d’occurrences SQLResult.

Vous utilisez un objet SQLResult pour accéder aux lignes de données renvoyées par une instruction SELECT (avec la propriété data), pour obtenir les informations sur l’identificateur de lignes d’une instruction INSERT (avec la propriété lastInsertRowID), pour déterminer le nombre de lignes affectées par une instruction INSERT, UPDATE ou DELETE (avec la propriété rowsAffected) ou pour déterminer si d’autres lignes de résultats SELECT n’ont pas été récupérées (avec la propriété complete).

flash.data.SQLStatement.getResult()flash.data.SQLStatement.execute()flash.data.SQLStatement.next()SQLResult Crée une occurrence SQLResult.dataArraynullTableau de lignes renvoyées par l’exécution d’une instruction. Si l’instruction ne renvoie aucune ligne, cette valeur doit être nulle. rowsAffectedNumber0Indique le nombre de ligne affectées par l’instruction exécutée. completeBooleantrueIndique si d’autres lignes peuvent être récupérées ou si toutes les données ont été renvoyées. rowIDNumber0Si l’instruction était une opération SQL INSERT, il s’agit du nouvel identifiant unique de la ligne. Crée une occurrence SQLResult. En général, le code du développeur n’appelle pas directement le constructeur SQLResult. Pour récupérer une occurrence SQLResult associée à une occurrence SQLStatement particulière, appelez la méthode getResult() de l’occurrence. Une occurrence SQLResult est également transmise sous forme d’argument à la fonction gestionnaire de résultats lorsqu’une occurrence Responder est spécifiée pour un appel de méthode execute() ou next(). complete Indique si toutes les données résultantes d’une exécution d’instruction ont été renvoyées.Boolean Indique si toutes les données résultantes d’une exécution d’instruction ont été renvoyées.

Lorsqu’une instruction renvoie une ou plusieurs lignes, cette propriété indique si toutes les lignes ont été renvoyées. Lorsque la méthode execute() de l’objet SQLStatement est appelée avec une valeur d’argument prefetch, seul le nombre de lignes de données résultantes spécifié est renvoyé dans la propriété data de l’objet SQLResult. Les appels suivants à SQLStatement.next() rendent d’autres données disponibles. Cette propriété est utilisée pour déterminer le moment où les résultats finaux ont été renvoyés.

Notez que, le nombre de lignes étant inconnu au moment de l’exécution, le curseur de la base de données doit se déplacer au-delà de la dernière ligne pour que l’exécution d’une instruction soit considérée comme complète. Lorsque la méthode SQLStatement.execute() est appelée avec un argument prefetch, au moins une ligne de plus que le nombre total de lignes du jeu de résultats doit être demandée avant que la propriété complete de l’occurrence SQLResult résultante soit true.

flash.data.SQLStatement.execute()flash.data.SQLStatement.next()
data Données renvoyées en tant que résultat de l’exécution de l’instruction, en particulier lorsqu’une instruction SQL SELECT est exécutée.Array Données renvoyées en tant que résultat de l’exécution de l’instruction, en particulier lorsqu’une instruction SQL SELECT est exécutée.

Lorsqu’une instruction renvoie une ou plusieurs lignes, cette propriété est un tableau contenant les objets qui représentent les lignes de données de résultat. Chaque objet dans le tableau possède des noms de propriété qui correspondent aux noms des colonnes du jeu de résultats.

Par exemple, supposons que vous exécutez l’instruction SQL SELECT suivante :

SELECT lastName, firstName FROM employees

En supposant que la table employees contient 10 lignes, la propriété SQLResult.data est un tableau de 10 éléments. Chaque élément est un objet avec deux propriétés : lastName et firstName.

La situation est plus complexe lorsque vous utilisez une instruction SELECT avec une colonne de résultats complexes, par exemple une fonction de regroupement. Par exemple, supposons que vous exécutez l’instruction SQL suivante :

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

Dans les résultats de cette instruction, chaque objet du tableau data comprend deux propriétés nommées departmentId et SUM(salary). Toutefois, "SUM(salary)" n’est pas un identifiant valable. Si vous utilisez une colonne calculée, par exemple une fonction de regroupement ou autre, spécifiez un alias pour la colonne calculée dans l’instruction SQL. Cet alias est utilisé comme nom de la propriété dans les objets de données de résultat. Par exemple, considérons cette alternative à l’instruction précédente :

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

Dans le tableau data de cette instruction, les objets de résultat possèdent deux propriétés nommées departmentId et salarySubtotal.

La propriété data est toujours un tableau, quel que soit le nombre de lignes et de colonnes du jeu de résultats. Par exemple, l’instruction SELECT suivante génère une ligne et une colonne, qui représentent une valeur unique :

SELECT COUNT(~~) AS numEmployees FROM employees

Après avoir exécuté la requête, la propriété data contient un objet Array avec un élément. Cet élément est un objet avec une seule propriété, numEmployees.

Si plusieurs noms de colonne sont dupliqués dans les données de résultat, notamment si l’instruction SELECT comporte deux colonnes id différentes de deux tableaux distincts, des noms de propriété sont attribués aux noms dupliqués en fonction de la valeur de la propriété SQLConnection.columnNameStyle. Par défaut, le nom de chaque colonne est utilisé comme nom de la propriété. Néanmoins, s’il existe plusieurs colonnes dans le jeu de résultats portant le même nom, le format de nom long [nom-table]_[nom-colonne] est utilisé chaque fois que le nom de plusieurs colonnes est identique. Ce comportement peut être modifié en définissant la propriétéSQLConnection.columnNameStyle.

Par défaut, les objets du tableau data sont des occurrences d’Object. Toutefois, si la valeur de la propriété SQLStatement.itemClass d’une classe est définie, les éléments du tableau data sont créés sous forme d’occurrences de cette classe. Pour chaque colonne du jeu de données de résultat, la classe itemClass doit avoir une propriété dont le nom correspond exactement au nom de la colonne.

Lorsque l’instruction ne renvoie aucune donnée, cette propriété est null. C’est le cas notamment s’il ne s’agit pas d’une instruction SELECT ou s’il s’agit d’une instruction SELECT qui renvoie 0 ligne.

Le code suivant illustre l’utilisation de la propriété itemClass pour que l’exécution crée des occurrences d’une classe personnalisée à partir des résultats de l’instruction SQL SELECT. // 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 Dernier identifiant généré par une instruction SQL INSERT.Number Dernier identifiant généré par une instruction SQL INSERT.

La valeur est 0 si l’instruction exécutée n’était pas une instruction INSERT.

Un identifiant de ligne est utilisé pour identifier une ligne de façon unique dans un tableau au sein d’une base de données. La valeur est générée fréquemment par la base de données.

Pour plus d’informations sur les clés primaires et les identifiants de ligne générés, voir les sections « CREATE TABLE » et « Expressions » dans l’annexe « Prise en charge SQL dans les bases de données locales ».

flash.data.SQLConnection.lastInsertRowIDflash.events.SQLUpdateEvent.rowID
rowsAffected Indique le nombre de lignes affectées par l’opération.Number Indique le nombre de lignes affectées par l’opération. Seules les modifications spécifiées directement par une instruction INSERT, UPDATE ou DELETE sont comptées.

Les modifications auxiliaires causées par des déclencheurs ne sont pas prises en compte. Pour connaître le nombre total de modifications, y compris dues à des déclencheurs, utilisez la propriété SQLConnection.totalChanges.

Notez que, lorsque l’opération SQL associée est une instruction DELETE sans clause WHERE (c’est-à-dire qu’elle supprime toutes les lignes de la table), la propriété rowsAffected est toujours 0, quel que soit le nombre de lignes supprimées. Pour connaître le nombre de lignes supprimées, vous pouvez inclure la clause WHERE, WHERE 1 = 1. Dans ce cas toutes les lignes sont supprimées et la propriété rowsAffected indique précisément le nombre de lignes supprimées. Toutefois, selon le nombre de lignes supprimées, cette opération affecte négativement les performances de l’instruction.

flash.data.SQLConnection.totalChanges