Android处理应用程序更新和数据库更改

我已经基本完成开发一个Android应用程序,使用SQLite数据库,我复制到设备上的用户数据区域,例如/ data / data / com.company.app/databases/users.db

我不确定市场应用程序更新过程如何发生,我也不确定如何testing它。

我目前检查数据库是否存在于设备上,如果没有,就复制它(通常只在首次启动时才会出现)。 如果我在更新的应用程序中有新版本的数据库会怎么样? 市场更新会擦除用户数据,以便在下次启动时复制我的新数据库?

如果我将数据库更改/添加logging/等,并将其与新的应用程序打包,将来会发生什么? 这个数据库不会覆盖旧的数据库吗?

否则,为了避免在每次启动时拷贝和覆盖应用程序包中的数据库,有没有办法检查数据库文件的大小和date,只有在数据库中的数据库较新时才能复制数据库文件的大小和date?

如果有人需要澄清,请询问。

Solutions Collecting From Web of "Android处理应用程序更新和数据库更改"

我正在做类似的事情。 我所做的是设置数据库版本,然后当我检查数据库是否存在时,我也要确保它是正确的版本。 如果不是,我保存数据库中的用户collections夹,擦除并复制我的数据库,然后放回用户collections夹。

这是我的升级

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (oldVersion == 2) { System.out.println("Performing upgrade!"); openDataBase(); // save the old favorites Cursor mCursor = getFavorites(); ArrayList<Stop> favs = allCursorToStops(mCursor); mCursor.close(); deleteRecreate(db); openDataBase(); for (int i = 0; i < favs.size(); i++) setFavorite(favs.get(i)); close(); } else { deleteRecreate(db); } } 

这里是我检查存在/如果需要升级等

  boolean dbExist = checkDataBase(); if(dbExist){ // check if we need to upgrade openDataBase(); int cVersion = myDataBase.getVersion(); close(); if(cVersion != VERSION) onUpgrade(myDataBase, myDataBase.getVersion(), VERSION);