Utiliser SQLite

You are viewing an old version of this entry, click here to see latest version.

Comme son nom l'indique SQLite est une base de données SQL très légère qui stocke son contenu dans un seul fichier sur le disque dur.
Cela signifie que c'est un outil parfaitement adapté pour des applications de bureaux ou pour un site web.


Connexion à la base de données

La première étape consiste à créer / ouvrir la base de données. Voici un échantillon qui utilisera le fichier "mybase.db" pour stocker le contenu de la base de données :

class Test {
    static function main() {
        var cnx = neko.db.Sqlite.open("mybase.db");
        // ...
        cnx.close();
    }
}

Une fois la base de données soit ouverte ou créée, un objet de connexion est renvoyée. Une fois que vous en avez terminé avec la connexion, il vous suffit de la fermer.

Création d'une table

Vous pouvez exécuter une requête en utilisant la méthode cnx.request("Ma_requete"). Pour créer une nouvelle table par exemple:

cnx.request("
        CREATE TABLE IF NOT EXISTS User (
            id INTEGER PRIMARY KEY AUTOINCREMENT, 
            name TEXT, 
            age INTEGER, 
            money DOUBLE
        )
");

Une fois que la table est créée, vous pouvez faire des requêtes SQL pour y insérer des valeurs :

cnx.request("INSERT INTO User (name,age,money) VALUES ('John',32,100.45)");
cnx.request("INSERT INTO User (name,age,money) VALUES ('Bob',14,4.50)");

Si vous fermez l'application, les données seront enregistrées dans le fichier de base de données afin que, la prochaine fois que vous redémarriez, elle soient toujours disponible.


Requêtes et enregistrements


Lorsqu'une demande est exécutée, elle retournera un ResultSet contenant toutes les lignes des enregistrements.

Voici un exemple:

var rset = cnx.request("SELECT * FROM User");
neko.Lib.print("Found "+rset.length+" users");
for( row in rset ) {
    neko.Lib.print("User "+row.name+" is "+row.age+" years old ");
}

Si le champ que vous choisissez n'a pas de nom, vous pouvez utiliser les méthodes "get" de l'objet ResultSet :
var r = cnx.request("SELECT COUNT(*), SUM(money) FROM User WHERE age >= 18");
neko.Lib.print("Users count = " + r.getIntResult(0));
neko.Lib.print("Total money = " + r.getFloatResult(1));

Dans le cas d'une requête de mise à jour (UPDATE), la taille (length) indiquera le nombre de lignes modifiées:

var rset = cnx.request("UPDATE User SET age = age + 1");
neko.Lib.print("Updated "+rset.length+" users");

Échapper (escaping)

Si vous voulez utiliser des chaînes de caractères dans vos requêtes SQL, n'oubliez pas de les "échapper" afin qu'elles ne puissent être considérées comme du code SQL supplémentaire.

Par exemple:

var rset = cnx.request("SELECT * FROM Users WHERE name = "+cnx.quote(name));

Voir

Les catégories suivantes de la docpourront être utiles:

Voir aussi le Tutoriel sur SPOD Modelisation Objet de BD, pour une API de avancée.

version #1450, modified 2008-05-13 22:22:54 by bruno