Hola a tod@s. Esoty intentando hacer una aplicación de air con flex. Es la primera vez que utilizo esto y me da un error. Buscando por ahí encontré un codigo para crear una base de datos y acceder a ella.
El error en concreto es el siguiente:
Error: Error #3109: Operation is not permitted when the SQLStatement.sqlConnection property is not set.
Os pongo primero lo que contiene el archivo de creación de la base de datos, porque como no se donde está el error..

Código ActionScript :

// ActionScript file
   
   import flash.data.SQLConnection;
   import flash.events.SQLErrorEvent;
   import flash.events.SQLEvent;   
   import mx.controls.Alert;
   
   private var conexion:SQLConnection;
   private var database:File;
   private var existeBD:Boolean = false;
   private var queryStatement:SQLStatement = new SQLStatement();      
   
   private function abreConexion():void {
      database = File.applicationStorageDirectory.resolvePath("baseDeDatos.db");
      conexion = new SQLConnection();
        conexion.addEventListener(SQLEvent.OPEN, crearTablas);
        conexion.addEventListener(SQLErrorEvent.ERROR, 
           function(event:SQLErrorEvent):void
           {
              Alert.show("No se pudo conectar a la base de datos");
           });        
              
           
       if(database.exists)  // Comprobamos si existe o no la base de datos
          existeBD = true; 
         
         conexion.open(database);
         queryStatement.sqlConnection = conexion;   
     
   }

   /********************************************
   * CREATE TABLE Queries
   *********************************************/
   private function crearTablas(event:SQLEvent):void {
   /*    queryStatement.clearParameters();
      var sql:String = "CREATE TABLE `usuario` ";
      sql += "(`id` INTEGER PRIMARY KEY  NOT NULL, `nombre` TEXT, `apellidos` TEXT ";
      sql += ", `sexo` TEXT, `leer` TEXT)";
      queryStatement.text = sql;
      try {
         queryStatement.execute();
         insertDefaultData();
      }
      catch(error:SQLError) {   
         Alert.show("Error al crear la tabla usuario " + error.toString());      
      } */
          var   consulta1:String   = "CREATE TABLE IF NOT EXISTS usuarios("         +
                        "user_id INTEGER PRIMARY KEY AUTOINCREMENT,"   +
                        "nombre TEXT,"                           +            
                        "apellidos TEXT,"                        +
                        "genero TEXT,"                           +
                        "leer TEXT"                           +
                        ")";   
         hacerConsulta(consulta1);
         if(!existeBD) {
         insertDefaultData();
      }      
   }
 
   /********************************************
    * INSERT default data Functions
    *********************************************/
   private function insertDefaultData():void {
 
        var   consulta:String   =   "INSERT INTO usuarios  (nombre, apellidos, genero, leer) VALUES (:nombre, :apellidos, :genero, :leer)";
      queryStatement.parameters[":nombre"] = 'Educador';
      queryStatement.parameters[":apellidos"] = 'pass';
      queryStatement.parameters[":genero"] = 'm';
      queryStatement.parameters[":leer"] = 'si';
      queryStatement.text = consulta;           
                          
        try {
         queryStatement.execute();
      }
      catch(error:SQLError) {   
         Alert.show("Error al insertar el registro");      
      }  
   }
   
   
   private function hacerConsulta(consulta:String):void
   {
         queryStatement.sqlConnection                = conexion;         
         queryStatement.text                     = consulta;
         
      /*    queryStatement.addEventListener            (SQLEvent.RESULT,
            function (e:SQLEvent):void
            {
               if(f != null)
               {
                  f(e.target.getResult());                     
               }
            }
         ); */
            queryStatement.addEventListener(SQLErrorEvent.ERROR, 
               function(event:SQLErrorEvent):void
               {
                  Alert.show("Error de conexion --> "+event.error.message);
               });      
         queryStatement.execute();
         
   }   


Ahora os pongo el codigo que utilizo para insertar un registro en la base de datos sqlite:

Código ActionScript :

   import flash.data.SQLConnection;
   import flash.events.SQLErrorEvent;
   import flash.events.SQLEvent;
   
   import mx.controls.Alert;
   
   private var conexion:SQLConnection;
   private var database:File;
   private var queryStatement:SQLStatement = new SQLStatement();
   
   public function abreConexion():void {
      nombre_txt.setFocus();
      database = File.applicationStorageDirectory.resolvePath("baseDeDatos.db");
      conexion = new SQLConnection();
        conexion.addEventListener(SQLEvent.OPEN, dbAbrirConexion);
        conexion.addEventListener(SQLErrorEvent.ERROR, 
           function(event:SQLErrorEvent):void
           {
              Alert.show("No se pudo conectar a la base de datos");
           });     
                   
         //conexion.openAsync(database); 
         conexion.open(database);
         
         queryStatement.sqlConnection = conexion;
            
   }
   
   private function dbAbrirConexion(event:SQLEvent):void {
      Alert.show("base de datos abierta");
   }
   

   private function restableceForma():void {
      nombre_txt.text = "";
      apellidos_txt.text = "";
      hombre_rb.selected=true;
      no_rb.selected=true;      
   }
   
   private function validaForma():void {
      escondeMensajes();
      if(nombre_txt.text == "") {
         msj1.visible = true;
         nombre_txt.setFocus();
      }
      else if(apellidos_txt.text == "") {
         msj2.visible = true;
         apellidos_txt.setFocus();
      }
      else if(!hombre_rb.selected && !mujer_rb.selected) {
         msj3.visible = true;
         hombre_rb.setFocus();
      }
      else if(!si_rb.selected && !no_rb.selected) {
         msj4.visible = true;
         no_rb.setFocus();
      }
      else
      //   compruebaCliente(); 
      insertaCliente();
   }
   

   
   private function escondeMensajes():void {
      msj1.visible = false;
      msj2.visible = false;
      msj3.visible = false;
      msj4.visible = false;
   }
   
   
   /********************************************
   * INSERT INTO Queries
   *********************************************/
    private function insertaCliente():void {
       var genero:String;
       if(hombre_rb.selected==true)
          genero="hombre";
       else
          genero="mujer";
       var leer:String;
       if(si_rb.selected==true)
          leer="si";
       else
          leer="no";
      var sql:String = "INSERT INTO usuarios (nombre, apellidos, genero, leer)";
      sql += " VALUES (:nombre, :apellidos, :genero, :leer) ";
      queryStatement.clearParameters();
      queryStatement.parameters[":nombre"] = nombre_txt.text;
      queryStatement.parameters[":apellidos"] = apellidos_txt.text;
      queryStatement.parameters[":genero"] = genero;
      queryStatement.parameters[":leer"] = leer;
      queryStatement.text = sql;
      
      try {
         queryStatement.execute();
         Alert.show("Sus datos han sido almacenados");
         restableceForma();
      }
      catch(error:SQLError){
         trace("Error: " + error.toString());
      }
   }  


Ya siento todo el rollo, pero esque estoy desesperada porque tampoco me muestra los datos almacenados en la base de datos ni nada. Seguro que es algun error en la conexión.
Os agradezco a todos la ayuda que podais darme.
Un saludo