В моем приложении для Android я использую SQLite DB с SQLiteOpenHelper
У меня несколько версий БД, и я выполнял onUpgrade()
, включив старую версию db, но теперь мне нужно удалить одну из таблиц, потому что я больше не использую ее, так что я должен делать что-то другое?
public void onCreate(SQLiteDatabase database) { database.execSQL(tableUserCreate); database.execSQL(tableProductsCreate); database.execSQL(tablePicturesCreate); } public void onUpgrade(SQLiteDatabase database, int version_old, int current_version) { switch (version_old) { case 1: database.execSQL(addPostcodeFieldToUserTable); database.execSQL(tablePlacesCreate); // Intentional fallthrough, no break; case 2: database.execSQL(tableProductVideosCreate); break; } } // End of onUpgrade
Теперь я хочу удалить таблицу User в новой версии DB . Что я делаю?
SQL для отбрасывания таблицы:
DROP TABLE table_name
Или используйте:
DROP TABLE IF EXISTS table_name
Когда вы меняете Database_Version, он вызывает
OnUpdate (SQLiteDatabase db, int oldVersion, int newVersion)
Прежде всего, поэтому вам нужно сделать все, чтобы удалить или создать материал внутри этого метода. В вашем случае вы используете случай Switch, я делаю то же самое, используя if else. Но в этом случае оба работают нормально.
If (newVersion == yourNewVersion) {
пытаться {
// Отбрасываем старую таблицу, если она существует
Db.execSQL ("DROP TABLE IF EXISTS" + YOUR_TABLE_NAME);
// Создаем таблицы снова, ЕСЛИ ВЫ ХОТИТЕ СОЗДАТЬ ЗДЕСЬ
} Catch (Исключение e) {e.printStackTrace ();
}