在AIR中如何避免重复创建SQL数据库

在AIR中,可以直接使用本地SQL数据库。要创建数据库文件,需要首先创建SQLConnection实例。调用其open()方法在同步执行模式下打开它,或者调用其openAsync()方法在异步执行模式下打开它。

以下代码使用异步执行模式创建数据库文件(新数据库)的过程。在本例中,数据库文件保存当前应用程序目录中,文件名为“sample.db”:

import flash.data.SQLConnection;
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);
var dbFile:File = File.applicationDirectory.resolvePath("sample.db");
conn.openAsync(dbFile);
function openHandler(event:SQLEvent):void{
    trace("the database was created successfully");
}
function errorHandler(event:SQLErrorEvent):void{
    trace("Error message:", event.error.message);
    trace("Details:", event.error.details);
}

注意这里有一个问题:每次调用open()方法或openAsync()方法都会新建数据库文件。要避免重复创建,只需调用方法前先判断数据库文件是否存在。

if(dbFile.exists){
    trace("the database existed");
}
else{
    conn.openAsync(dbFile);
}

发表评论