我一直在努力升級我的預填充SQLite數據庫,並不能完全解決如何讓onUpgrade工作。請參閱下面我的代碼來複制整個數據庫。使用onUpgrade更新我的預填充SQLite數據庫()
// MAIN MENU ON GAME LOAD UP
DB_PATH = getDatabasePath(DataBaseHelper.DB_NAME).toString();
DataBaseHelper myDbHelper = new DataBaseHelper(this);
myDbHelper = new DataBaseHelper(this);
try
{
myDbHelper.createDataBase();
}
catch (IOException ioe)
{
throw new Error("Unable to create database");
}
myDbHelper.close();
// HELPER CLASS
public class DataBaseHelper extends SQLiteOpenHelper
{
private static final int DATABASE_VERSION = 1;
public DataBaseHelper(Context context)
{
super(context, DB_NAME, null, DATABASE_VERSION);
this.myContext = context;
}
public void createDataBase() throws IOException
{
boolean dbExist = databaseExist();
if(dbExist)
{
//database already exist
}
else
{
try
{
copyDataBase();
}
catch (IOException e)
{
throw new Error("Error copying database");
}
}
}
@Override
public void onCreate(SQLiteDatabase db) {}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
switch (oldVersion)
{
case 1:
db.execSQL("UPDATE MazeOnDraw SET posX=1, posY=2 WHERE rowid=5");
break;
}
}
}
所以我不知道我在做什麼錯在這裏然而onUpgrade似乎永遠不會被調用,我遞增數據庫版本。除此之外,這個過程可以與多個數據庫一起工作,因爲我可能有兩個不同的數據庫(儘管如果需要可以將它們壓縮爲1)。
最後,可以通過ecplise調試來測試onUpgrade進程,還是必須通過開發人員控制檯上的alpha版本進行測試。
我會鼓勵你切換到[使用'SQLiteAssetHelper'(https://github.com/jgilfelt/android-sqlite-asset-helper)。 – CommonsWare
這看起來非常有保證,並且會在今晚看到這個 –