Я знаю, что это старый пост, но для тех, кто все еще попадает сюда после поиска в Google или Bing, это решение указанной проблемы:
в createDataBase () есть следующая проверка;
this.getReadableDatabase();
Это проверяет, существует ли база данных с указанным именем, и если нет, создает пустую базу данных, так что ее можно перезаписать с той, которая находится в папке ресурсов. На более новых устройствах это работает безупречно, но есть некоторые устройства, на которых это не работает. В основном старые устройства. Я не знаю точно, почему, но похоже, что функция getReadableDatabase () не только получает базу данных, но и открывает ее. Если вы затем скопируете базу данных из папки ресурсов поверх нее, у нее все еще есть указатель на пустую базу данных, и вы получите таблицу несуществующих ошибок.
Таким образом, чтобы заставить его работать на всех устройствах, вы должны изменить его на следующие строки:
SQLiteDatabase db = this.getReadableDatabase();
if (db.isOpen()){
db.close();
}
Даже если база данных открыта в чеке, она впоследствии будет закрыта, и это не доставит вам больше хлопот.