问题
当执行AIR应用程序的时候,我们连接到数据库文件并创建相同的表,这样肯能丢失数据。
解决
解决这个问题的简单的办法是,验证是否表被创建到数据库文件时使用了SQLite指令IF NOT EXISTS。
详细描述
解决这个问题的一种方法是下面这段代码。第一个函数仅仅连接到database.db,第二个函数在数据库文件中创建表。通常我们创建一个表,不验证是否表已经创建到文件database.db,我们仅仅使用了SQLite指令的CREATE TABLE,但是运行应用程序时它总是创建表。使用 IF NOT EXISTS 我们就可以解决。
代码
private function createTable():void
{
createStmt = new SQLStatement();
createStmt.sqlConnection = conn;
var sql:String = "";
sql += "CREATE TABLE IF NOT EXISTS rssURL (";
sql += " id INTEGER PRIMARY KEY AUTOINCREMENT,";
sql += " postName TEXT,";
sql += " postURL TEXT,";
sql += " postText TEXT";
sql += ")";
createStmt.text = sql;
try
{
createStmt.execute();
}
catch (error:SQLError)
{
trace("Error creating table");
trace("CREATE TABLE error:", error);
trace("error.message:", error.message);
trace("error.details:", error.details);
return;
}
}