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

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 , чтобы открыть существующую базу данных только для чтения. В таком случае можно извлекать данные из базы данных, но добавлять, удалять или изменять данные нельзя.