連線到資料庫Adobe AIR 1.0 以及更新的版本 在您能夠執行任何資料庫作業之前,必須先開啟資料庫檔案的連線。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,以唯讀模式開啟現有的資料庫。在此情況下,可以從資料庫中擷取資料,但是無法加入、刪除或變更資料。 |
|