連線到資料庫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,以唯讀模式開啟現有的資料庫。在此情況下,可以從資料庫中擷取資料,但是無法加入、刪除或變更資料。 |
|