2013-05-12 113 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 2013-05-12 10:08:34

+1

它會工作,如果你改變'版本號.. .. – Pragnani 2013-05-12 10:12:41

+0

我有一個open()方法在另一個類:public void open( )throws SQLException { \t \t database = dbHelper.getWritableDatabase(); \t \t}我在按鈕的onClick上調用這個方法,所以我打電話給它。 – 2013-05-12 10:15:55

回答

0

您可以在SQLite查詢瀏覽器(http://sourceforge.net/projects/sqlitebrowser/)中打開SqLite數據庫並在其中添加列。在添加列後,您可以將您在項目中使用的.db文件替換爲添加了新列的文件。

希望它有幫助!

+0

問題是我已經發布了該應用程序,所以我希望在安裝新版本時自動完成此操作。 – 2013-05-12 10:18:12

+0

然後在較新的版本中,您可以檢查應用程序是否是第一次安裝,如果只是這樣,您可以以編程方式爲高分添加新列。 或者您可以檢查數據庫中是否存在一個名爲'levels'的列,它不是,您可以通過aromatically添加該列。 – 2013-05-12 10:20:07

+0

也許我不太明白,但如果第一次安裝的應用程序沒有任何問題,並且工作正常。問題是否已經安裝了以前的版本。然後我得到崩潰,我需要刪除以前的文件,所以重新創建它。 – 2013-05-12 10:24:33