连接到数据库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,以便在只读模式下打开现有的数据库。在这种情况下,可以从数据库检索数据,但是不能添加、删除或更改数据。 |
|