2012-05-14 162 views
0

我正在開發一個應用程序使用android C2DM。 sqlite3是我的後端。一切都工作正常,但遇到與sqlite3性能問題。所以我的問題是'我可以將數據庫代碼放在只執行一次的地方,即dvm(dalvik vertiual machine)應該只執行一次與db有關的代碼;在連續運行期間,dvm不應該通過(db)代碼,因爲db已經創建。Sqlite代碼應該只執行一次

更具體地說,我的應用程序發送味精的所有手機有我的應用程序。所以當客戶端的應用程序收到消息時,dvm不應執行此代碼: SQLiteDatabase db;

//use tat ref to open or create a table 
    db = openOrCreateDatabase("/data/data/de.vogella.android.c2dm.simpleclient/app_database/file__0/0000000000000001.db", SQLiteDatabase.CREATE_IF_NECESSARY, null); 

    try 
    { 

     //initialsiging a query with all the table fields 
     final String CREATE_TABLE_CONTAIN = "CREATE TABLE IF NOT EXISTS tbl_Message4(" 
       + "id INTEGER PRIMARY KEY AUTOINCREMENT," 
       + "msg TEXT not null," 
       + "msg_time INTEGER not null," 
       + "msg_status INTEGER not null);"; 

     //execute the above query 
     db.execSQL(CREATE_TABLE_CONTAIN); 

因爲每次有味精都會執行此代碼。所以我想避免這種情況,我想我已經傳達了我的信息。任何幫助將不勝感激。

感謝,

TheIlliterate

+0

我的回答對你有幫助嗎?如果確實如此,您應該接受它(如果沒有,請點擊複選標記),讓我們知道,以便我們可以嘗試解決問題。 – Barak

回答

0

你所要求的是正常的(和首選)的使用情況。

Android有幾個類和方法來做到這一點。

您基本上創建了一個幫助程序類來管理數據庫,它將有一個擴展SQLiteOpenHelper的類,因爲您重寫了onCreate和onUpgrade方法來處理創建和升級數據庫的操作。那麼,在輔助類中創建其他方法(而不是SQLiteOpenHelper擴展類)以處理與輔助類中的數據庫相關的所有函數(如添加/刪除/更新記錄)是正常的。

有幾個例子和教程浮動。一個好的是here

祝你好運

+0

嘿,我通過那些教程,但沒有提到數據庫代碼將被執行一次或每次收到一條新消息時。 – TheIlliterate

+0

從教程「在這個類中,你需要重寫onCreate()和onUpgrade()方法。 如果數據庫不存在,onCreate()被框架調用。請注意最後一位:**如果數據庫不存在**。所以它只會創建你的數據庫一次。 – Barak

+0

嗨巴拉克,我明白了。但我的問題是, dvm應該只通過db代碼一次,而不是每次收到msg時。 – TheIlliterate