Verbinden met een database

Adobe AIR 1.0 of hoger

Voordat u databasebewerkingen kunt uitvoeren, moet u een verbinding met het databasebestand tot stand brengen. Er wordt een SQLConnection -instantie gebruikt die een verbinding met een of meer databases vertegenwoordigt. De eerste database waarmee u via een SQLConnection-instantie verbinding maakt, wordt de “hoofd”database genoemd. Met deze database maakt u verbinding via de methode open() (voor de synchrone uitvoeringsmodus) of openAsync() (voor de asynchrone uitvoeringsmodus).

Als u een database opent via de bewerking openAsync() , moet u de gebeurtenis open van de SQLConnection-instantie registreren zodat u een melding ontvangt wanneer de bewerking openAsync() is voltooid. Deze registratie is nodig als u wilt dat de gebeurtenis error van de SQLConnection-instantie controleert of de bewerking is voltooid/mislukt.

In het volgende voorbeeld ziet u hoe u een bestaand databasebestand opent voor asynchrone uitvoering. Het databasebestand heeft de naam "DBSample.db" en bevindt zich in de De opslagmap van een toepassing aanwijzen .

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>

In het volgende voorbeeld ziet u hoe u een bestaand databasebestand opent voor synchrone uitvoering. Het databasebestand heeft de naam "DBSample.db" en bevindt zich in de De opslagmap van een toepassing aanwijzen van de gebruiker.

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>

Let op: bij het oproepen van de methode openAsync() in het asynchrone voorbeeld en het oproepen van de methode open() in het synchrone voorbeeld is het tweede argument de constante SQLMode.UPDATE . Als u SQLMode.UPDATE opgeeft voor de tweede parameter ( openMode ), treedt een fout op als het opgegeven bestand niet bestaat. Als u SQLMode.CREATE opgeeft voor de parameter openMode (of als u geen waarde opgeeft voor de parameter openMode ), probeert de runtime een databasebestand te creëren als het opgegeven bestand niet bestaat. Als het bestand echter bestaat, wordt het geopend (vergelijkbaar met het gebruik van SQLMode.Update ). U kunt ook SQLMode.READ opgeven voor de parameter openMode als u een bestaande database in alleen-lezen modus wilt openen. In dat geval kunnen gegevens uit de database worden opgehaald maar niet worden toegevoegd, verwijderd of gewijzigd.