Seconde partie de cette série d'article sur SQLite et AIR : créer et se connecter à une base de données.
Comme précédemment, vous allez voir que tout est déjà prévu et vraiment très simple. Tout se fait en quelques étapes : instanciation de la classe File, création du fichier de base de données, ouverture de la connexion.
Etape 1 : instanciation de la classe File
La première étape consiste à faire appel à la classe File afin de créer le répertoire dans lequel se situera notre base de données.
Air stocke les informations de l'application (base de données, images, etc) dans un répertoire propre à l'application elle même. Afin de retrouver ce dossier, deux lignes de codes suffisent :
var appStorage = air.File.applicationStorageDirectory.nativePath; air.Introspector.Console.log("Dossier de l'application : " + appStorage);
Résultat en image dans la console de débuggage de AIR :
Mais revenons à nos moutons et créons donc notre répertoire :
// Constantes var DB_FOLDER = "db"; // creation du repertoire var dbFolder = air.File.applicationStorageDirectory.resolvePath(DB_FOLDER); dbFolder.createDirectory();
On initialise une constante avec le nom que nous souhaitons donner à notre répertoire. La variable dbFolder instancie la classe File avec ce nom. L'instruction createDirectory() crée le répertoire. Et voilà !
Etape 2 : création du fichier de base de données
Cette seconde étape est tout aussi simple que la première : on définit une constante pour notre nom de fichier de base de données et ensuite... on le crée.
// Constantes var DB_FOLDER = "db"; var DB_NAME = "maBase.db"; // creation du repertoire var dbFolder = air.File.applicationStorageDirectory.resolvePath(DB_FOLDER); dbFolder.createDirectory(); // creation de la base var mainDB = dbFolder.resolvePath(DB_NAME);
Il ne nous reste plus qu'à établir la connexion avec notre base de données.
Etape 3: ouverture de la connexion
La connexion à une base de données dans AIR peut se faire de deux façons différentes : synchrone et asynchrone.
Lors de l'exécution d'une connexion synchrone, l'application est mise "en pause" le temps qu'elle soit terminée. Autrement dit, elle empêche l'utilisateur d'interagir avec l'application.
En revanche, la connexion asynchrone permet d'exécuter des opérations avec la base de données tout en gardant l'application active.
Pour ces deux types de connexion, deux méthodes :
- open()
- openAsync()
Cette dernière étape va se passer en deux temps : connexion SQL et ouverture de notre base.
Après mise à jour du code précédent, nous arrivons à ce résultat :
// Constantes var DB_FOLDER = "db"; var DB_NAME = "maBase.db"; // creation du repertoire var dbFolder = air.File.applicationStorageDirectory.resolvePath(DB_FOLDER); dbFolder.createDirectory(); // creation de la base var mainDB = dbFolder.resolvePath(DB_NAME); // connexion a la base var dbConnect = new air.SQLConnection(); try { // opening DB dbConnect.open(mainDB); air.Introspector.Console.log("DB ouverte"); } catch(error) { air.Introspector.Console.log("Erreur :", error.message); air.Introspector.Console.log("Détails de l'erreur :", error.details); }
Dans cet exemple, les erreurs éventuelles sont retransmises par la clause "catch" et s'affichent dans la console. Cette méthode n'est valable que pour la méthode synchrone.
Pour une connexion asynchrone, il faut passer par un écouteur des événements de connexion SQL : SQLEvent.OPEN et SQLErrorEvent.ERROR.
// Constantes var DB_FOLDER = "db"; var DB_NAME = "maBase.db"; // creation du repertoire var dbFolder = air.File.applicationStorageDirectory.resolvePath(DB_FOLDER); dbFolder.createDirectory(); // creation de la base var mainDB = dbFolder.resolvePath(DB_NAME); // connexion a la base var dbConnect = new air.SQLConnection(); dbConnect.openAsync(mainDB); dbConnect.addEventListener(air.SQLEvent.OPEN, mafonctionOuverture); dbConnect.addEventListener(air.SQLErrorEvent.ERROR, mafonctionErreur);
Vous savez maintenant créer une base de données avec AIR et ouvrir une connexion.
Prochaine étape : création et gestion des tables dans la base.
Bon vent !
Je ne savais pas que AIR permettais de travailler avec du SQLite. C'est vraiment une bonne nouvelle que j'apprends par votre blog que j'ai trouvé par hasard!
Oui, AIR permet beaucoup de choses avec SQLite. Et c'est un vrai plaisir que de travailler avec une base de données sans avoir besoin de php. De plus, les performances sont plutôt bonnes.