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

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

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

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

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

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

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

  • Android:使用SimpleCursorAdapter从数据库获取数据到ListView
  • Android数据库encryption
  • 在游标中find输出值logcat? - Android
  • 随机exceptionandroid.database.sqlite.SQLiteException:无法打开数据库文件
  • 数据库中的每个表是否应该有一个SQLiteOpenHelper?
  • Android中的单个应用程序中的多个数据库
  • 限制使用Parse的呼叫数量
  • 同步数据库Mysql SQLite
  • 我正在做类似的事情。 我所做的是设置数据库版本,然后当我检查数据库是否存在时,我也要确保它是正确的版本。 如果不是,我保存数据库中的用户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);