文章目錄
問題
當執行AIR應用程式的時候,我們串連到資料庫檔案並建立相同的表,這樣肯能遺失資料。
解決
解決這個問題的簡單的辦法是,驗證是否表被建立到資料庫檔案時使用了SQLite指令IF NOT EXISTS。
詳細描述
解決這個問題的一種方法是下面這段代碼。第一個函數僅僅串連到database.db,第二個函數在資料庫檔案中建立表。通常我們建立一個表,不驗證是否表已經建立到檔案database.db,我們僅僅使用了SQLite指令的CREATE TABLE,但是運行應用程式時它總是建立表。使用 IF NOT EXISTS 我們就可以解決。
代碼
private function init():void<br />{<br />conn = new SQLConnection();<br />try<br />{<br /> var dbFile:File = File.applicationStorageDirectory.resolvePath("database.db");<br /> conn.open(dbFile);<br />}<br />catch (error:SQLError)<br />{<br />trace("Error opening database");<br />trace("error.message:", error.message);<br />trace("error.details:", error.details);<br />return;<br />}<br />createTable();<br />}</p><p>private function createTable():void<br />{<br />createStmt = new SQLStatement();<br />createStmt.sqlConnection = conn;<br />var sql:String = "";<br />sql += "CREATE TABLE IF NOT EXISTS rssURL (";<br />sql += "idINTEGER PRIMARY KEY AUTOINCREMENT,";<br />sql += "postNameTEXT,";<br />sql += "postURLTEXT,";<br />sql += "postTextTEXT";<br />sql += ")";<br />createStmt.text = sql;</p><p>try<br />{<br />createStmt.execute();<br />}<br />catch (error:SQLError)<br />{<br />trace("Error creating table");<br />trace("CREATE TABLE error:", error);<br />trace("error.message:", error.message);<br />trace("error.details:", error.details);<br />return;<br />}<br />}