I am about to start building a mobile (iOS/Android) app that uses a local database (probably SQLite). Since this is my first "real" mobile app, I am wondering what the standard approaches are to version management of the DB.

My thinking is I would do this:

  • include a base creation SQL script in the resources of the app. This would include the creation of a versions table, which would have one record for every version of the app.
  • for every new version of the app, including a corresponding upgrade SQL script. At a minimum, that script would insert a new entry into the versions table
  • write a data store management service. This service would be responsible for creating the initial DB (via the create script), reporting the current version of the DB, and upgrading it if necessary (via the upgrade scripts)
  • leverage the data store management service during application initialization to create/upgrade the database as necessary. This would, of course, be done asynchronously and with UI telling the user what is happening

Is this approach reasonable? Am I overlooking anything obvious?

  • (No experience in mobile app development) have you considered the uninstalling and reinstalling scenario also? (I have installed an app recently which re-downlaods its ~700MB db during each upgrade. Excellent app but design in terms of upgrades could have been better) – dbza Aug 1 '14 at 23:24
  • 1
    For Android the SQLiteOpenHelper (developer.android.com/reference/android/database/sqlite/…) provides already a concept. The usage of onCreate() is pretty clear. For onUpgrade() check the oldVersion and incrementally implement the steps to do from one version to another. The underlying concept is probably pretty easy to adopt to other platforms (as iOS). – André May 3 '15 at 10:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.