Antes de que pueda realizar cualquier operación en la base de datos, primero abra una conexión al archivo de la base de datos. Se usa una instancia de
SQLConnection
para representar una conexión a una o varias bases de datos. La primera base de datos que se conecta usando una instancia SQLConnection se denomina la base de datos “principal”. Esta base de datos se conecta usando el método
open()
(para el modo de ejecución sincrónico) o el método
openAsync()
(para el modo de ejecución asíncrono).
Si abre una base de datos usando la operación asíncrona
openAsync()
, se debe registrar para el evento
open
de la instancia SQLConnection para saber cuándo se completa la operación
openAsync()
. Regístrese para el evento
error
de la instancia SQLConnection para determinar si la operación falla.
En el siguiente ejemplo se muestra cómo abrir un archivo de base de datos existente para la ejecución asíncrona. El archivo de la base de datos se denomina “DBSample.db” y se encuentra en el
Apuntar al directorio de almacenamiento de la aplicación
.
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>
En el siguiente ejemplo se muestra cómo abrir un archivo de base de datos existente para la ejecución sincrónica. El archivo de la base de datos se denomina “DBSample.db” y se encuentra en el
Apuntar al directorio de almacenamiento de la aplicación
.
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>
Observe que en la llamada del método
openAsync()
en el ejemplo asíncrono y en la llamada del método
open()
en el ejemplo sincrónico, el segundo argumento es la constante
SQLMode.UPDATE
. La especificación de
SQLMode.UPDATE
para el segundo parámetro (
openMode
) hace que el motor de ejecución distribuya un error si el archivo especificado no existe. Si pasa un valor
SQLMode.CREATE
para el parámetro
openMode
(o si desactiva el parámetro
openMode
), el motor de ejecución intenta crear un archivo de base de datos si el archivo especial no existe. No obstante, si el archivo existe está abierto, que es lo mismo que utilizar
SQLMode.Update
. Asimismo puede especificar
SQLMode.READ
para el parámetro
openMode
para abrir una base de datos existente en el modo de solo lectura. En ese caso, se pueden recuperar los datos de la base de datos pero no se pueden añadir, eliminar ni cambiar datos.