659441806 发表于 2016-11-30 08:57:22

Flex

问题
  当执行AIR应用程序的时候,我们连接到数据库文件并创建相同的表,这样肯能丢失数据。

解决
  解决这个问题的简单的办法是,验证是否表被创建到数据库文件时使用了SQLite指令IF NOT EXISTS。

详细描述
  解决这个问题的一种方法是下面这段代码。第一个函数仅仅连接到database.db,第二个函数在数据库文件中创建表。通常我们创建一个表,不验证是否表已经创建到文件database.db,我们仅仅使用了SQLite指令的CREATE TABLE,但是运行应用程序时它总是创建表。使用 IF NOT EXISTS 我们就可以解决。

代码

private function init():void
{   
conn = new SQLConnection();   
try
{   
var dbFile:File = File.applicationStorageDirectory.resolvePath("database.db");   
conn.open(dbFile);   
}   
catch (error:SQLError)   
{   
trace("Error opening database");   
trace("error.message:", error.message);   
trace("error.details:", error.details);   
return;   
}   
createTable();   
}   
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;   
}   
}
页: [1]
查看完整版本: Flex