Привет, я сейчас работаю над приложением для словаря языков.База данных из базы данных SQLite, которую я ввожу вручную.Особенность приложения в том, что пользователи могут задавать любые слова, которых нет в списке, который нужно добавить, поэтому мне приходится обновлять базу данных вручную каждый раз, когда обновляется приложение.
Проблема в том, что каждый раз, когда я изменяю данные БД,список не обновляется, когда я изменяю номер версии, приложение зависало.
Как я могу решить эту проблему?Учебники там только показывают, как это сделать на вводе в реальном времени или добавлении столбцов, в то время как основной только для добавления строк и на уже существующих БД.Спасибо.
Вот мой класс DataBaseHelper
public class DataBaseHelper extends SQLiteAssetHelper {
private static final String DB_Name = "kamus_db";
private static final int DB_VER = 1;
private static final String TB_DATA = "tb_data";
private static final String COL_ID = "_id";
private static final String COL_TURKI = "turki";
private static final String COL_ISTILAH ="istilah";
private static final String COL_INDONESIA = "indonesia";
private static DataBaseHelper dbInstance;
private static SQLiteDatabase db;
private DataBaseHelper(Context ctx) {
super(ctx, DB_Name, null, DB_VER);
}
static DataBaseHelper getInstance(Context ctx) {
if (dbInstance == null) {
dbInstance = new DataBaseHelper(ctx);
db = dbInstance.getWritableDatabase();
} return dbInstance;
}
@Override
public synchronized void close() {
super.close();
if (dbInstance != null) {
dbInstance.close();
}
}
List<Kamus> getAllKamus() {
List<Kamus> kamusList = new ArrayList<>();
Cursor cursor = db.query(TB_DATA, new String[] {
COL_ID, COL_TURKI, COL_ISTILAH, COL_INDONESIA
}, null, null, null, null, null);
if (cursor.getCount() >= 1 ) {
cursor.moveToFirst();
do {
Kamus kamus = new Kamus();
kamus.setTurki(cursor.getString(cursor.getColumnIndexOrThrow(COL_TURKI)));
kamus.setIstilah(cursor.getString(cursor.getColumnIndexOrThrow(COL_ISTILAH)));
kamus.setIndonesia(cursor.getString(cursor.getColumnIndexOrThrow(COL_INDONESIA)));
kamusList.add(kamus);
} while (cursor.moveToNext());
} return kamusList;
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String TAG = "TAG";
Log.w(TAG, "Upgrading database. Existing contents will be lost. ["
+ oldVersion + "] -> [" + newVersion + "]");
db.execSQL("DROP TABLE " + TB_DATA);
onCreate(db);
}
}