2012-03-26 60 views
0

我想弄清楚什麼順序,我需要做的一切,讓我的程序流動良好,而不是崩潰。我想我的遊戲的玩家有一隊的三人各自爲自己的階級與統計信息,如攻擊,健康等Android:SQLite數據庫試圖不覆蓋值,每次我開始

  1. 當遊戲第一次安裝和運行,我想有一個SQLite db製作並填充了3個起始字符。
  2. 當他們在任何其他時間啓動它時,我希望將DB中存儲的三個字符分配給3個本地字符對象。

我有一個處理Db的SQLite適配器類,但我不知道如何排序所有東西,以便我首先檢查程序Db路徑中是否有Db,如果有則打開它。否則,只需創建一個新的並用初始字符填充它。

我目前有:

DbAdapter = new PlayerDbAdapter(this); 
    DbAdapter.open(); 
    DbAdapter.setInitialPlayers(); // inserts my initial player object info into the Db 

這就要求

public PlayerDbAdapter open() throws SQLException { 
     dbHelper = new SummonSQLiteHelper(context); 
     String s = DbPath + DB_NAME; 
     database = SQLiteDatabase.openOrCreateDatabase(s, null); 
     return this; 
} 

現在我是什麼,我需要確保我不重寫有點失落任何保存的信息中每次啓動程序時,Db都帶有初始值。有什麼建議麼?

回答

0

嘗試這樣

public PlayerDbAdapter open() throws SQLException { 
    dbHelper = new SummonSQLiteHelper(context); 
    String s = DbPath + DB_NAME; 
    bool b=checkDataBase(s); 
    if(b==false) 
    { 
     database = SQLiteDatabase.openOrCreateDatabase(s, null); 
     setInitialPlayers(); <---- set initial values here 
    } 
    else 
    { 
    database = SQLiteDatabase.openOrCreateDatabase(s, null); 

    } 
    return this; 
    } 
    private boolean checkDataBase(String str) { 
    SQLiteDatabase checkDB = null; 
try { 
    checkDB = SQLiteDatabase.openDatabase(str, null, 
      SQLiteDatabase.OPEN_READONLY); 
    checkDB.close(); 
} catch (SQLiteException e) { 
    // database doesn't exist yet. 
} 
return checkDB != null ? true : false; 
}