Hello,

my app was released a year ago or so, but now one year later, I get the
following error message:

android.database.sqlite.SQLiteException: no such table: tracking: ,
while compiling: SELECT _id, ...

How can it happen that the table does not exist? In one installation of
thousands?

The app accesses the db via an SQLiteOpenHelper.

This is my implementation, a little bit shortened:


public class DatabaseHelper extends SQLiteOpenHelper {

   private static final int      DATABASE_VERSION = 22;

   private static final String   DATABASE_NAME    = "de.sportscheck.db";

   private static DatabaseHelper dh;

   public static synchronized DatabaseHelper singleton(final Context
context) {

      if (dh == null) {
         dh = new DatabaseHelper(context);
      }

      return dh;
   }

   private DatabaseHelper(final Context context) {

      super(context, DATABASE_NAME, null, DATABASE_VERSION);
   }

   @Override
   public void onCreate(SQLiteDatabase db) {

      createTrainingTable(db);
      createTrainingStepTable(db);
      createTrackingTable(db);
      createBreadcrumbTable(db);
      createKmTable(db);
   }

   @Override
   public void onUpgrade(SQLiteDatabase db, int oldVersion, int
newVersion) {

      if (oldVersion == 12) {

         db.execSQL("ALTER TABLE " ...
         db.execSQL("ALTER TABLE " ...
      }

      if (oldVersion == 21) {

         createKmTable(db);
      }
   }

   private void createTrainingTable(SQLiteDatabase db) {

      db.execSQL("DROP TABLE IF EXISTS
".concat(TrainingProvider.TABLE_NAME) + ";");
      String sql = "CREATE TABLE ".concat(TrainingProvider.TABLE_NAME) ...
               .concat(TrainingItem.TYP).concat(" TEXT);");
      db.execSQL(sql);
   }

   private void createTrainingStepTable(SQLiteDatabase db) {

      db.execSQL("DROP TABLE IF EXISTS
".concat(TrainingStepProvider.TABLE_NAME) + ";");
      String sql = "CREATE TABLE
".concat(TrainingStepProvider.TABLE_NAME) ...
      db.execSQL(sql);
   }

   private void createTrackingTable(SQLiteDatabase db) {

      db.execSQL("DROP TABLE IF EXISTS
".concat(TrackingProvider.TABLE_NAME) + ";");
      String sql = "CREATE TABLE ".concat(TrackingProvider.TABLE_NAME) ...
      db.execSQL(sql);
   }

   private void createBreadcrumbTable(SQLiteDatabase db) {

      db.execSQL("DROP TABLE IF EXISTS
".concat(BreadcrumbProvider.TABLE_NAME) + ";");
      String sql = "CREATE TABLE ".concat(BreadcrumbProvider.TABLE_NAME) ...
      db.execSQL(sql);
   }

   private void createKmTable(SQLiteDatabase db) {

      db.execSQL("DROP TABLE IF EXISTS ".concat(KmProvider.TABLE_NAME) +
";");
      String sql = "CREATE TABLE ".concat(KmProvider.TABLE_NAME) ...
      db.execSQL(sql);
   }
}

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to