데이터베이스 연결

Adobe AIR 1.0 이상

데이터베이스 작업을 수행하려면 먼저 데이터베이스 파일에 대한 연결을 엽니다. SQLConnection 인스턴스는 하나 이상의 데이터베이스에 대한 연결을 나타내는 데 사용됩니다. SQLConnection 인스턴스를 사용하여 연결된 첫 번째 데이터베이스를 "기본" 데이터베이스라고 합니다. 이 데이터베이스는 동기 실행 모드의 경우 open() 메서드를 사용하여 연결되고 비동기 실행 모드의 경우에는 openAsync() 메서드를 사용하여 연결됩니다.

비동기 openAsync() 작업을 사용하여 데이터베이스를 여는 경우 openAsync() 작업이 완료된 때를 알기 위해 SQLConnection 인스턴스의 open 이벤트에 대해 등록하고 작업이 실패한 경우를 확인하기 위해 SQLConnection 인스턴스의 error 이벤트에 대해 등록합니다.

다음 예제에서는 비동기 실행을 위해 기존 데이터베이스 파일을 여는 방법을 보여 줍니다. 응용 프로그램 저장소 디렉토리 가리키기 라는 데이터베이스 파일이 사용자의 응용 프로그램 저장소 디렉토리에 있습니다.

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>

다음 예제에서는 동기 실행을 위해 기존 데이터베이스 파일을 여는 방법을 보여 줍니다. 응용 프로그램 저장소 디렉토리 가리키기 라는 데이터베이스 파일이 사용자의 응용 프로그램 저장소 디렉토리에 있습니다.

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 입니다. 두 번째 매개 변수( openMode )에 SQLMode.UPDATE 를 지정한 경우 지정된 파일이 없으면 런타임에서 오류를 전달합니다. openMode 매개 변수에 SQLMode.CREATE 를 전달하거나 openMode 매개 변수를 해제하는 경우 지정된 파일이 없으면 런타임에서 데이터베이스 파일을 만들려고 합니다. 그러나 파일이 있으면 파일이 열립니다. 이것은 SQLMode.Update 를 사용할 때와 동일합니다. openMode 매개 변수에 SQLMode.READ 를 지정하여 읽기 전용 모드로 기존 데이터베이스를 열 수도 있습니다. 이 경우 데이터베이스에서 데이터를 검색할 수 있지만 데이터를 추가, 삭제 또는 변경할 수 없습니다.