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.