在您能夠執行任何資料庫作業之前,必須先開啟資料庫檔案的連線。
SQLConnection
實體會用來代表一或多個資料庫的連線。使用 SQLConnection 實體進行連線的第一個資料庫稱為「主」資料庫。這個資料庫會使用
open()
方法 (適用於同步執行模式) 或
openAsync()
方法 (適用於非同步執行模式) 進行連線。
如果您使用非同步
openAsync()
作業開啟資料庫,請註冊 SQLConnection 實體的
open
事件,才能知道
openAsync()
作業何時完成。註冊 SQLConnection 實體的
error
事件,以判斷作業是否失敗。
下列範例會示範如何以非同步執行開啟現有的資料庫檔案。資料庫檔案稱為「DBSample.db」,且位於使用者的
指向應用程式儲存目錄
。
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>
下列範例會示範如何以同步執行開啟現有的資料庫檔案。資料庫檔案稱為「DBSample.db」,且位於使用者的
指向應用程式儲存目錄
。
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
,以唯讀模式開啟現有的資料庫。在此情況下,可以從資料庫中擷取資料,但是無法加入、刪除或變更資料。