Android: БД SQLite пытается не перезаписывать значения при каждом запуске - PullRequest
0 голосов
/ 26 марта 2012

Я пытаюсь выяснить, в каком порядке мне нужно сделать все, чтобы моя программа работала хорошо, а не зависала. Я хочу, чтобы у игрока в моей игре была команда из трех человек в своем классе со статистикой, такой как атака, здоровье и т. Д.

  1. Когда игра будет впервые установлена ​​и запущена, я хочу сделать sqlite db и заполнить ее тремя начальными персонажами.
  2. Когда они запускают его в любое другое время, я хочу, чтобы три сохраненных символа в БД были назначены 3 локальным символьным объектам.

У меня есть класс адаптера SQLite, обрабатывающий Db, но я не уверен, как все упорядочить, чтобы сначала проверить, есть ли 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;
}

И теперь я немного растерялся относительно того, что мне нужно, чтобы убедиться, что я не перезаписываю сохраненную информацию в БД начальными значениями при каждом запуске программы. Есть предложения?

1 Ответ

0 голосов
/ 26 марта 2012

Попробуйте вот так

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...