Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

25jan/113

AIR SQLite – Création d'une base de données SQLite

Dans le dernier article, on a vu que l'on pouvait ouvrir sa base SQLite de manière synchrone ou asynchrone, chaque méthode ayant ses avantages et ses inconvénients.

Pour créer une nouvelle base de donnée, il vous faudra d'abord créer une nouvelle instance de SQLConnection.

Pour ouvrir la connexion, vous utiliserez ensuite les méthodes open() (synchrone) ou openAsync() (asynchrone). A chacune de ces méthodes, vous devrez fournir un argument de type File. Si cet argument fait référence à un fichier non-existant, les méthodes open() et openAsync() vont créer un fichier automatiquement et ouvrir la connexion directement.

Fichier de référence et conventions de nommage

Notez que le fichier qui va contenir la base de donnée peut être nommé de n'importe quelle manière (valide pour un fichier) avec n'importe quelle extension. Classiquement, on nomme ces fichiers ".db" même s'il est plus clean de lui donner l'extension ".sqlite" qui va permettre une ouverture automatique dans certains gestionnaires de BDD.

Notez aussi que si vous ne passez pas ce paramètre mais que vous passez "null", la base sera créée en mémoire et pas sur le disque. A la fermeture de l'application par l'utilisateur, il n'y aura donc aucun moyen de récupérer les informations enregistrées dans la base

Créer une BDD SQLite en mode synchrone

L'exemple de code suivant va créer et ouvrir une base nommé "DBSample.db" en mode synchrone.

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
                        applicationComplete="onAppComplete();">
  <mx:Script>
    <![CDATA[
      import flash.data.SQLConnection;
      import flash.events.SQLErrorEvent;
      import flash.events.SQLEvent;
      import flash.filesystem.File;

      private var _sqlConnection:SQLConnection = null;

      private function onAppComplete():void {
        _sqlConnection = new SQLConnection();
        var dbFile:File = File.applicationStorageDirectory.resolvePath("DBSample.db");
        try{
          _sqlConnection.open(dbFile);
          trace("the database was created successfully");
        }catch (error:SQLError){
          trace("Error message:", error.message);
          trace("Details:", error.details);
        }
        // votre BDD est accessible ici
      }
    ]]>
  </mx:Script>
</mx:WindowedApplication>

Créer une BDD SQLite en mode asynchrone

Voici le même exemple mais en mode asynchrone.

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
                        applicationComplete="onAppComplete();">
  <mx:Script>
    <![CDATA[
      import flash.data.SQLConnection;
      import flash.events.SQLErrorEvent;
      import flash.events.SQLEvent;
      import flash.filesystem.File;

      private var _sqlConnection:SQLConnection = null;

      private function onAppComplete():void {
        _sqlConnection = new SQLConnection();
        _sqlConnection.addEventListener(SQLEvent.OPEN, openHandler);
        _sqlConnection.addEventListener(SQLErrorEvent.ERROR, errorHandler);

        var dbFile:File = File.applicationStorageDirectory.resolvePath("DBSample.db");

        _sqlConnection.openAsync(dbFile);
      }

      private function openHandler(event:SQLEvent):void {
        trace("the database was created successfully");
        // votre BDD est disponible à partir d'ici
      }

      private function errorHandler(event:SQLErrorEvent):void {
        trace("Error message:", event.error.message);
        trace("Details:", event.error.details);
      }
    ]]>
  </mx:Script>
</mx:WindowedApplication>

Votre base de données est maintenant ouverte et connectée. Avant d'y introduire des données, il vous faudra créer des tables de stockage, ce que nous allons voir dans le tutorial suivant.

Articles similaires

Commentaires (3) Trackbacks (0)
  1. Salut,

    connaitrais-tu un sqlite manager air qui soit cappable d'ouvrir une base encrypté en lui passant la clé de 16 caractères qu'on passe en paramètres de la fonction flash.data.SQLConnection.open()

    merci

  2. Salut,
    je n'en ai pas testé beaucoup, donc je ne sais pas trop :P

    Fabien

  3. bon tant pis, vais me coder un microfrontal pour mon besoin, ça va être moche, mais ce sera mieux que rien

    merci quand même


Leave a comment

(required)

Aucun trackbacks pour l'instant