jeudi 4 octobre 2007
Une classe pour manipuler une base de données dans AIR
Actionscript/Flash/Flex - Lien permanent
Je viens d'écrire une petite classe assez simple pour faciliter la manipulation d'une base de données SQLLite dans une application AIR. Cette classe fonctionne comme une couche d'abstraction entre l'application et la base de données.
La classe peut être téléchargée ici, sous licence Creative Commons.
Par défaut la méthode "select" retourne un tableau d'objets mais il est possible d'indiquer une classe personnalisée à utiliser à la place. En effet, grâce à la propriété itemClass de la classe SQLStatement il est possible de faire correspondre facilement une classe Actionscript à une table de la base, les propriétés publiques de la classe sont alors remplies automatiquement avec les valeurs des colonnes de la table portant le même nom, super pratique :)
Voici un exemple d'utilisation :
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="init()">
<mx:Script>
<![CDATA[
import net.burnyourbrowser.data.SQLiteManager;
import User;
[Bindable]
private var db:SQLiteManager;
private function init():void{
this.db = new SQLiteManager("app-resource:/base.db");
this.db.select("SELECT * FROM users", User);
}
private function removeSelectedItem():void{
var id:int = resultDataGrid.selectedItem.id;
this.db.remove("DELETE FROM profiles WHERE id="+id);
}
]]>
</mx:Script>
<mx:DataGrid id="resultDataGrid" dataProvider="{db.result}">
<mx:columns>
<mx:DataGridColumn headerText="id" dataField="id"/>
<mx:DataGridColumn headerText="name" dataField="firstname"/>
<mx:DataGridColumn headerText="url" dataField="lastname"/>
</mx:columns>
</mx:DataGrid>
<mx:Button label="Supprimer" click="removeSelectedItem()"/>
</mx:WindowedApplication>
Pour la création initiale de la base, je vous conseille SQLite Administrator, gratuit et qui fonctionne plutôt bien.
Je vous file le code sous licence Creative Commons, vous pouvez donc en faire ce que bon vous semble :)
Commentaires