Połączenie z bazą danych

Adobe AIR 1.0 i starsze wersje

Zanim możliwe będzie wykonanie jakichkolwiek operacji bazy danych najpierw należy nawiązać połączenie z plikiem bazy danych. Instancja klasy SQLConnection służy do reprezentowania połączenia z jedną lub większą liczbą baz danych. Pierwsza baza danych, która zostanie połączona za pomocą instancji SQLConnection, jest określana jako „główna” baza danych. Ta baza danych zostanie połączona za pomocą metody open() (dla trybu wykonywania synchronicznego) lub za pomocą metody openAsync() (dla trybu wykonywania asynchronicznego).

Jeśli baza danych zostanie otwarta za pomocą asynchronicznej operacji openAsync() , należy dokonać rejestracji dla zdarzenia open instancji SQLConnection w celu określenia czasu zakończenia operacji openAsync() . W celu ustalenia, czy operacja się nie powiodła, należy dokonać rejestracji zdarzenia error instancji SQLConnection.

Poniższy przykład prezentuje sposób otwierania istniejącego pliku bazy danych dla wykonywania asynchronicznego. Plik bazy danych ma nazwę „DBSample.db” i znajduje się w Wskazywanie na katalog zapisu aplikacji użytkownika.

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>

W poniższym przykładzie przedstawiono sposób otwierania istniejącego pliku bazy danych w przypadku wykonywania synchronicznego. Plik bazy danych ma nazwę „DBSample.db” i znajduje się w Wskazywanie na katalog zapisu aplikacji użytkownika.

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>

W wywołaniu metody openAsync() w przykładzie wykonania asynchronicznego oraz w wywołaniu metody open() w przykładzie wykonania synchronicznego drugi argument jest stałą SQLMode.UPDATE . Określenie stałej SQLMode.UPDATE dla drugiego parametru ( openMode ) powoduje, że środowisko wykonawcze wywołuje błąd, jeśli określony plik nie istnieje. Jeśli stała SQLMode.CREATE zostanie przekazana dla parametru openMode (lub jeśli parametr openMode pozostanie wyłączony), wówczas środowisko wykonawcze podejmie próbę utworzenia pliku bazy danych, pod warunkiem że określony plik nie istnieje. Jeśli jednak plik istnieje, to zostanie otwarty, tak jak gdyby została użyta metoda SQLMode.Update . Możliwe jest również wybranie stałej SQLMode.READ dla parametru openMode w celu otwarcia istniejącej bazy danych w trybie tylko do odczytu. W takim przypadku dane można pobrać z bazy danych, ale nie można ich dodawać, usuwać ani zmieniać.