Connessione a un database

Adobe AIR 1.0 e versioni successive

Prima di poter eseguire qualsiasi operazione relativa al database è necessario aprire la connessione al file del database. Si utilizza un'istanza SQLConnection per rappresentare la connessione a uno o più database. Il primo database connesso tramite l'istanza SQLConnection è detto database “principale”. Questo database è connesso tramite il metodo open() per la modalità di esecuzione sincrona o il metodo openAsync() per quella asincrona.

Se si apre un database utilizzando l'operazione asincrona openAsync() , è opportuno registrarlo per l'evento open dell'istanza SQLConnection per venire avvertiti del completamento dell'operazione openAsync() e registrarlo per l'evento error dell'istanza SQLConnection per venire avvertiti dell'eventuale mancata riuscita dell'operazione.

L'esempio seguente illustra l'apertura di un database già esistente per l'esecuzione asincrona. Il file del database è denominato “DBSample.db” e si trova nella Puntamento alla directory di memorizzazione dell'applicazione dell'utente.

import flash.data.SQLConnection; 
import flash.data.SQLMode; 
import flash.events.SQLErrorEvent; 
import flash.events.SQLEvent; 
import flash.filesystem.File; 
     
var conn:SQLConnection = new SQLConnection(); 
     
conn.addEventListener(SQLEvent.OPEN, openHandler); 
conn.addEventListener(SQLErrorEvent.ERROR, errorHandler); 
     
// The database file is in the application storage directory 
var folder:File = File.applicationStorageDirectory; 
var dbFile:File = folder.resolvePath("DBSample.db"); 
     
conn.openAsync(dbFile, SQLMode.UPDATE); 
     
function openHandler(event:SQLEvent):void 
{ 
    trace("the database opened successfully"); 
} 
     
function errorHandler(event:SQLErrorEvent):void 
{ 
    trace("Error message:", event.error.message); 
    trace("Details:", event.error.details); 
} 
<?xml version="1.0" encoding="utf-8"?> 
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()"> 
    <mx:Script> 
        <![CDATA[ 
            import flash.data.SQLConnection; 
            import flash.data.SQLMode; 
            import flash.events.SQLErrorEvent; 
            import flash.events.SQLEvent; 
            import flash.filesystem.File; 
             
            private function init():void 
            { 
                var conn:SQLConnection = new SQLConnection(); 
                 
                conn.addEventListener(SQLEvent.OPEN, openHandler); 
                conn.addEventListener(SQLErrorEvent.ERROR, errorHandler); 
                 
                // The database file is in the application storage directory 
                var folder:File = File.applicationStorageDirectory; 
                var dbFile:File = folder.resolvePath("DBSample.db"); 
                 
                conn.openAsync(dbFile, SQLMode.UPDATE); 
            } 
             
            private function openHandler(event:SQLEvent):void 
            { 
                trace("the database opened successfully"); 
            } 
             
            private function errorHandler(event:SQLErrorEvent):void 
            { 
                trace("Error message:", event.error.message); 
                trace("Details:", event.error.details); 
            } 
        ]]> 
    </mx:Script> 
</mx:WindowedApplication>

L'esempio seguente illustra l'apertura di un database già esistente per l'esecuzione sincrona. Il file del database è denominato “DBSample.db” e si trova nella Puntamento alla directory di memorizzazione dell'applicazione dell'utente.

import flash.data.SQLConnection; 
import flash.data.SQLMode; 
import flash.errors.SQLError; 
import flash.filesystem.File; 
     
var conn:SQLConnection = new SQLConnection(); 
     
// The database file is in the application storage directory 
var folder:File = File.applicationStorageDirectory; 
var dbFile:File = folder.resolvePath("DBSample.db"); 
     
try 
{ 
    conn.open(dbFile, SQLMode.UPDATE); 
    trace("the database opened successfully"); 
} 
catch (error:SQLError) 
{ 
    trace("Error message:", error.message); 
    trace("Details:", error.details); 
} 
<?xml version="1.0" encoding="utf-8"?> 
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()"> 
    <mx:Script> 
        <![CDATA[ 
            import flash.data.SQLConnection; 
            import flash.data.SQLMode; 
            import flash.errors.SQLError; 
            import flash.filesystem.File; 
             
            private function init():void 
            { 
                var conn:SQLConnection = new SQLConnection(); 
                 
                // The database file is in the application storage directory 
                var folder:File = File.applicationStorageDirectory; 
                var dbFile:File = folder.resolvePath("DBSample.db"); 
                 
                try 
                { 
                    conn.open(dbFile, SQLMode.UPDATE); 
                    trace("the database opened successfully"); 
                } 
                catch (error:SQLError) 
                { 
                    trace("Error message:", error.message); 
                    trace("Details:", error.details); 
                } 
            } 
        ]]> 
    </mx:Script> 
</mx:WindowedApplication>

Va notato che, quando si chiama il metodo openAsync() nell'esempio asincrono e quando si chiama il metodo open() nell'esempio singolo, il secondo argomento è la costante SQLMode.UPDATE . Se si specifica SQLMode.UPDATE per il secondo parametro ( openMode ) si fa sì che il runtime crei un errore se il file specificato non esiste. Se si passa SQLMode.CREATE per il parametro openMode , o se si omette il parametro openMode , il runtime tenta di creare un file di database nel caso in cui il file specificato non esista. Se tuttavia il file è presente, viene aperto; corrisponde all'uso di SQLMode.Update . Si può inoltre specificare SQLMode.READ per il parametro openMode al fine di aprire in modalità di sola lettura un database già esistente. In tal caso, sarà possibile recuperare dati dal database ma non aggiungere, eliminare o modificare dati.