Пока в БД была 1 таблица, проблем не было, использовал просто sql запрос drop table.
Сейчас база разрослась до 11 таблиц, и первый вопрос(как создать несколько таблиц я вроде нагуглил, не уверен что оптимально но работает), то второй, как дропнуть всю базу остаётся открытым.
Смог найти что в SQLite нету такого запроса как drop database, и что нужно использовать deleteDatabase чтобы удалить сам файл базы.
Код базы. Пока тестирую приложение хотел каждый раз при изменение базы просто удалять всё, и создавать заново. Пока была 1 таблица, при обновление версии, удалялась таблица и создавалась новая onCreate(db), но как сделал db.deleteDatabse(file), при вызове onCreate(db) вылетает ошибка о том что таблицы уже созданы. Как так получается ума не приложу...
Может кто пояснить что не так делаю, или так и должно быть?
Код: Выделить всё
public class LyricsDataBaseHelper extends SQLiteOpenHelper implements BaseColumns {
private static final String DATABASE_NAME = "lyrics_database.db";
private static final int DATABASE_VERSION = 8;
public static final String TABLE_NAME_SONGS = "songs";
public static final String SONGNAME = "songname";
public static final String LYRICS = "lyrics";
public static final String TABS = "tabs";
public static final String STRUM = "strum";
public static final String FINGERING = "fingering";
public static final String TABLE_NAME_ACCORD = "accords";
public static final String ACCORD_NAME = "accordname";
public static final String ACCORD_APPLICATURA = "applicatura";
public static final String TABLE_NAME_PERFORMER = "performer";
public static final String PERFORMER_NAME = "perfmane";
public static final String TABLE_NAME_GROUP = "groups";
public static final String GROUP_NAME = "groupname";
private static final String SQL_CREATE_TABLE_SONG = "CREATE TABLE " + TABLE_NAME_SONGS +
" (" + LyricsDataBaseHelper._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ SONGNAME + " VARCHAR(30), "
+ LYRICS + " TEXT, "
+ STRUM + " TEXT, "
+ TABS + " TEXT, "
+ FINGERING + " TEXT);";
private static final String SQL_CREATE_TABLE_CHORDS = "CREATE TABLE " + TABLE_NAME_ACCORD +
" (" + LyricsDataBaseHelper._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ ACCORD_NAME + " VARCHAR(15), "
+ ACCORD_APPLICATURA + " TEXT);";
public static final String SQL_CREATE_TABLE_PERFORMER = "CREATE TABLE " + TABLE_NAME_PERFORMER +
" (" + LyricsDataBaseHelper._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ PERFORMER_NAME + " VARCHAR(50));";
public static final String SQL_CREATE_TABLE_GROUP = "CREATE TABLE " + TABLE_NAME_GROUP +
" (" + LyricsDataBaseHelper._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ GROUP_NAME + " VARCHAR(50));";
private static final String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + TABLE_NAME_SONGS;
public LyricsDataBaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_CREATE_TABLE_SONG);
db.execSQL(SQL_CREATE_TABLE_CHORDS);
db.execSQL(SQL_CREATE_TABLE_GROUP);
db.execSQL(SQL_CREATE_TABLE_PERFORMER);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w("LOG_TAG", "Обновление базы данных с версии " + oldVersion + " до версии " + newVersion + ", которое удалит все старые данные");
File file = new File(db.getPath());
db.deleteDatabase(file);
// onCreate(db);
}
}