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 Peka mot programlagringskatalogen .

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 Peka mot programlagringskatalogen .

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.