2013-05-12 21 views
2

У меня есть база данных sqlite в моем приложении, в которой хранятся высокие баллы. Недавно я добавил новый столбец (уровни) и вам нужно обновить базу данных, иначе приложение сработает. Если я удалю вручную, файл .db отлично работает. Я пытался увеличить версию базы данных, но не работал. Итак, как это сделать?Как обновить базу данных sqlite?

Вот мой SQLite вспомогательный класс:

public class DataBaseHelper extends SQLiteOpenHelper{ 

public static final String TABLE_HISCORES = "hiScores"; 
static final String RANK = "_id"; 
static final String NAME = "name"; 
static final String SCORE = "score"; 
static final String LEVEL = "level"; 
private static final String DATABASE_NAME = "scoresdb.db"; 
private static final int DATABASE_VERSION = 1; 
SQLiteDatabase db; 

private static final String DATABASE_CREATE = "CREATE TABLE " + TABLE_HISCORES + " (" 
     + RANK + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
     + NAME + " TEXT, " 
     + LEVEL + " TEXT, " 
     + SCORE + " INTEGER);"; 
public DataBaseHelper(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

@Override 
public void onCreate(SQLiteDatabase database) { 
    database.execSQL(DATABASE_CREATE); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // TODO Auto-generated method stub 
    Log.w(DataBaseHelper.class.getName(), 
      "Upgrading database from version " + oldVersion + " to " 
       + newVersion + ", which will destroy all old data"); 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_HISCORES); 
     onCreate(db); 


} 

}

Что нужно, чтобы добавить/изменить?

+1

Он должен работать. Вы назвали 'getWriteableDatabase'? См. Http://stackoverflow.com/questions/8627075/updating-sqlite-database-versions – svenkapudija

+1

Он будет работать, если вы измените номер версии .. – Pragnani

+0

У меня есть метод open() в другом классе: public void open () throws SQLException { \t \t database = dbHelper.getWritableDatabase(); \t \t}, и я вызываю этот метод на кнопке onClick, поэтому я назвал его. –

ответ

0

Вы можете открыть базу данных SqLite в браузере запросов SQLite (http://sourceforge.net/projects/sqlitebrowser/) и добавить туда столбец. После добавления столбца вы можете заменить файл .db, который вы используете в своем проекте, с тем, в котором вы добавили новый столбец.

Надеюсь, это поможет!

+0

Проблема в том, что я опубликовал приложение, поэтому хочу, чтобы это было сделано автоматически при установке новой версии. –

+0

Затем в новой версии вы можете сделать чек, если приложение будет установлено в первый раз, если только вы можете добавить новый столбец для высоких результатов программно. Или вы можете проверить, существует ли в базе данных столбец с именем «уровни», это не так, вы можете добавить этот столбец. –

+0

Возможно, я не очень хорошо понял, но если приложение установлено в первый раз, нет никаких проблем и работает нормально. Проблема, если уже установлена ​​предыдущая версия. Затем я получаю сбой, и мне нужно удалить предыдущий файл, чтобы его воссоздать. –