簡體   English   中英

使用onUpgrade()更新預填充的SQLite數據庫

[英]Updating my pre-populated SQLite database using onUpgrade()

我一直在努力升級預先填充的SQLite數據庫,但無法完全確定如何使onUpgrade正常工作。 請在下面查看我的代碼以跨數據庫復制。

// 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,而是在增加數據庫版本。 此外,此過程可以與多個數據庫一起使用,因為我可能有2個不同的數據庫(盡管如果需要可以將其壓縮為1個)。

最后,可以通過ecplise調試來測試onUpgrade進程,還是必須通過開發者控制台上的Alpha版本對其進行測試。

請將DB_vERSION的值更改為2.。以便DDMS可以識別應用程序具有較新版本的數據庫以進行升級。

更改

private static final int DATABASE_VERSION = 2;

super(context, DB_NAME, null, DATABASE_VERSION );

在此語句中,最后一個參數是數據庫版本。 新的更新的APK 設置為2 因此現有用戶可以擁有新添加的表或列。

在更新的APK onUpgrade上會調用。 在那里您可以從資產復制數據庫。 但最好的選擇是在數據庫中動態添加表。

參考這個答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM