Android:SQLite DB尝试在每次启动时都不会覆盖值

时间:2012-03-26 04:38:20

标签: android sqlite

我正在试图弄清楚我需要做什么的顺序让我的程序流畅而不会崩溃。我希望我的游戏玩家拥有一个由三人组成的团队作为他们自己的班级,其中包括攻击,健康等等。

  1. 首次安装和运行游戏时,我希望制作一个sqlite数据库并填充3个起始字符。
  2. 当他们在任何时候启动它时,我希望将DB中的三个存储字符分配给3个本地字符对象。
  3. 我有一个处理Db的SQLite Adapter类但是我不知道如何订购所有内容以便我首先检查程序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中任何已保存的信息。有什么建议吗?

1 个答案:

答案 0 :(得分: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;
}