我真的很苦惱在我的應用程序中使用SqlLite;Android SQLite何時何地初始化SQLiteOpenHelper
我已經建立了從SQLiteOpenHelper
延伸public class DatabaseHelper extends SQLiteOpenHelper {
在OnCreate我創造約6表的數據庫輔助類:
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE myTestTable (Id INTEGER PRIMARY KEY , "
+ "info TEXT," +
+ "TopLeft TEXT")); <-- example insert
}
當我的應用程序開始我解析一些XML和將數據輸入到表中,並且檢查了數據庫,並且所有數據都在那裏,我的表格正確創建。
當我去打電話的數據它不見了! 我在dbhelper類和每個活動中都有很多不同的查詢;我正在重新初始化類,以便能夠在類中獲得我的函數。
我認爲這不是做它的方式,因爲它再次運行我的oncreate並擦除我所有的表(或者至少這是當我嘗試調用數據後檢查數據庫時正在執行的操作它和它是空的!
在我印象中的OnCreate只跑了一次,下,但這顯然並非如此,因爲這似乎是重建我的DB每次擦着我的數據!
你在哪裏意思初始化dbhelper類,並且如何阻止它重新創建表?我需要數據在應用程序關閉時仍然存在!
我很困惑!
如果這沒有意義,請問我如何澄清它的具體問題!
UPDATE
我發現我可以添加
CREATE TABLE IF NOT EXISTS
停靠它重新創建表,但它似乎仍然沒有正確調用的OnCreate每次..
很好的問題,我希望有人想出了一個答案,至於你的「插入」不過,你標誌着關閉數據庫之前成功的交易? – 2011-05-13 15:37:36
是否將靜態類聲明爲靜態解決問題? – 2011-05-13 15:42:09
@DAVE G所有的數據肯定會進入數據庫,我的意思是在插入後關閉數據庫?目前只是在做:\t SQLiteDatabase db = this.getWritableDatabase(); ....整理所有的數據和做:db.insert(「TABLENAME」,null,cv); ...那就是它的結局? – Bex 2011-05-13 15:44:36