Подключение к базе данных

Adobe AIR 1.0 и более новых версий

Перед выполнением операций базы данных необходимо сначала открыть подключение к файлу базы данных. Экземпляр SQLConnection представляет подключение к одной или нескольким базам данных. Первая база данных, подключенная с использованием экземпляра SQLConnection, является «главной» базой данных. Эта база данных подключается с использованием метода open() (для использования синхронного режима выполнения) или метода openAsync() (для использования асинхронного режима выполнения).

При открытии базы данных с использованием асинхронной операции openAsync() зарегистрируйте событие open экземпляра SQLConnection, чтобы узнать о завершении операции openAsync(). Зарегистрируйте событие error экземпляра SQLConnection, чтобы узнать о сбое в выполнении операции.

Следующий пример иллюстрирует открытие существующего файла базы данных для асинхронного выполнения. Файл базы данных называется DBSample.db и находится в пользовательском каталоге хранилища приложения.

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>

Следующий пример иллюстрирует открытие существующего файла базы данных для синхронного выполнения. Файл базы данных называется DBSample.db и находится в пользовательском каталоге хранилища приложения.

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>

Обратите внимание на то, что в вызове метода openAsync() в примере асинхронного выполнения и в вызове метода open() в примере синхронного выполнения вторым аргументом является константа SQLMode.UPDATE. При задании SQLMode.UPDATE для второго параметра (openMode) среда выполнения выдает ошибку, если указанный файл не существует. При передаче SQLMode.CREATE параметру openMode (или при отключении параметра openMode) среда выполнения пытается создать файл базы данных, если указанный файл не существует. Но если файл уже существует, он будет открыт, что равносильно использованию SQLMode.Update. Можно также задать SQLMode.READ для параметра openMode, чтобы открыть существующую базу данных только для чтения. В таком случае можно извлекать данные из базы данных, но добавлять, удалять или изменять данные нельзя.