Ansluta till en databas

Adobe AIR 1.0 och senare

Innan du kan utföra några databasåtgärder måste du först öppna en anslutning till databasfilen. En SQLConnection-instans används för att representera en anslutning till en eller flera databaser. Den första databasen som ansluts med en SQLConnection-instans kallas ”huvuddatabasen”. Den här databasen ansluts med metoden open() (för synkront körningsläge) eller openAsync() (för asynkront körningsläge).

Om du öppnar en databas med den asynkrona åtgärden openAsync(), aktiverar du SQLConnection-instansens open-händelse så att du vet när åtgärden openAsync() har slutförts. Aktivera SQLConnection-instansens error-händelse om du vill avgöra om åtgärden misslyckas.

I följande exempel visas hur du öppnar en befintlig databasfil för asynkron körning. Databasfilen heter DBSample.db och finns i användarens programlagringskatalog.

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>

I följande exempel visas hur du öppnar en befintlig databasfil för synkron körning. Databasfilen heter DBSample.db och finns i användarens programlagringskatalog.

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>

Observera, att i anropet av metoden openAsync() i det asynkrona exemplet och i anropet av metoden open() i det synkrona exemplet, är det andra argumentet konstanten SQLMode.UPDATE. Om du anger SQLMode.UPDATE för den andra parametern (openMode) skickas ett fel i körningen om den angivna filen inte finns. Om du skickar SQLMode.CREATE för parametern openMode (eller om du utelämnar parametern openMode) görs ett försök att skapa en databasfil i körningen om den angivna filen inte finns. Om filen finns öppnas den emellertid, vilket är detsamma som om du använder SQLMode.Update. Du kan också ange SQLMode.READ för parametern openMode om du vill öppna en befintlig databas i skrivskyddat läge. I så fall kan data hämtas från databasen, men inga data kan läggas till, tas bort eller ändras.