Voilà un petit exemple de connexion à une base sqlite avec AIR inspiré d'une démo trouvée sur le site d'adobe:
http://www.adobe.com/devnet/air/flex/quickstart/simple_sql_database.html
Création d'une nouveau projet de type Desktop application
File => new Flex project => (Project name = testSqlAir) (Application type= Desktop application)
Le fichier src/testSqlAir.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="init();">
<mx:Script source="dean.as"/>
<mx:Label text="Saisir un nom"/>
<mx:TextInput id="textInput"/>
<mx:Button label="Inserer" click="inserer();"/>
<mx:DataGrid id="resultsGrid" height="100%" width="100%"/>
</mx:WindowedApplication>
Le fichier src/dean.
import flash.data.SQLConnection; //Pour établissement de connexion db
import flash.data.SQLResult; //Pour affichage
import flash.data.SQLStatement; //Pour exécution de requêtes
import flash.filesystem.File; //Pour utilisation du fichier de base de donnée
private var conn:SQLConnection;
private var requete:SQLStatement;
private function init():void{
conn = new SQLConnection();
requete = new SQLStatement();
var dbFile:File = new File("file:///C:/testDb.db"); //Lien du fichier de base de donnée
conn.addEventListener(SQLEvent.OPEN, databaseOk);
conn.open(dbFile); //ouverture de la base de donnée
}
private function databaseOk(event:SQLEvent ):void{
conn.removeEventListener(SQLEvent.OPEN, databaseOk);
requete.sqlConnection = conn; //Configuration de l'instance de requête avec la base
requete.text= "CREATE TABLE IF NOT EXISTS agent (id INTEGER PRIMARY KEY AUTOINCREMENT,nom TEXT)";
requete.addEventListener(SQLEvent.RESULT, creationOk);
requete.execute(); //Création de la table
}
private function creationOk(event:SQLEvent):void{
requete.removeEventListener(SQLEvent.RESULT, creationOk);
getData(); //Appel affichage
status = "Prêt pour insertion";
}
private function inserer():void{
status = "Insertion en cours";
if(""!==textInput.text){
requete.addEventListener(SQLEvent.RESULT, insertOk);
requete.text="INSERT INTO agent (nom) VALUES ('"+textInput.text+"')";
requete.execute(); //Insertion
}else{
status = "Veuillez saisir un nom";
}
}
private function insertOk(event:SQLEvent=null):void{
status = "Insertion terminé";
requete.removeEventListener(SQLEvent.RESULT, insertOk);
textInput.text="";
getData(); //Appel affichage
}
private function getData():void{
requete.text = "SELECT id, nom FROM agent";
requete.addEventListener(SQLEvent.RESULT, selectOk);
requete.execute(); //Select
}
private function selectOk(event:SQLEvent):void{
requete.removeEventListener(SQLEvent.RESULT, selectOk);
var result:SQLResult = requete.getResult(); //On récupère le résultat dans un SQLResult
resultsGrid.dataProvider = result.data; //Affichage dans le dataGrid
}
Exécuter (Ctrl + F11)
Le code source:
http://www.progs.fr/exemple/08102101/index.html