Не звоните getWritableDatabase()
. Используйте тот, который передан в:
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String query = "ALTER TABLE names ADD COLUMN hidden integer default 0";
db.rawQuery(query, null);
}
Почему? Когда вы звоните getWritableDatabase()
, OpenHelper обнаруживает, что база данных должна быть обновлена, поэтому он запускает предупреждение о рекурсии, которое вы видите. Другими словами, вы в onUpgrade()
. Вы звоните getWritableDatabase()
, который видит, что обновление необходимо. Если бы не чек, вы бы вернулись обратно к onUpgrade()
до бесконечности.