#java #android #mysql #sqlite #challenge-response
#java #Android #mysql #sqlite #вызов-ответ
Вопрос:
Как я могу добавить новый столбец или новую таблицу в базу данных, которая предварительно заполнена (в активах) с использованием SQLiteAssetHelper. Изначально я предварительно загружал простую таблицу с 3 столбцами:
- ID
- вопрос
- ответ
После установки приложения мне нужно добавить несколько столбцов, которые будут заполнены пользовательскими данными, такими как помеченные как избранные, просмотренные ранее, отредактированные… Также мне нужно добавить новую таблицу, в которой записывается время сеанса изучения и последний просмотренный вопрос. вот мой код:
import android.content.Context;
import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;
public class DatabaseOpenHelper extends SQLiteAssetHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "mydatabase.db.sqlite";
public DatabaseOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
}
и
public class DatabaseAccess {
private SQLiteOpenHelper openHelper;
private SQLiteDatabase database;
private static DatabaseAccess instance;
Ответ №1:
Привет, вы можете использовать onUpgrade
public class OpenHelper extends SQLiteOpenHelper {
private final static int DB_VERSION = 2;
public TracksDB(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
//....
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < 2) {
"create table session"
" (_id integer primary key autoincrement, "
"date text not null, "
"question text not null);";
db.execSQL(CREATE_TBL );
}
}
}
Вы можете проверить версию базы данных. Если версия базы данных в приложении старая, запустите create или alter query запрос.
SQLiteDatabase db = new Helper(context).getWritableDatabase();
if(db.getVersion()<2){
"create table session"
" (_id integer primary key autoincrement, "
"date text not null, "
"question text not null);";
db.execSQL(CREATE_TBL );
}
You must upgrade database version in asset folder.
Комментарии:
1. Спасибо, Ахмед, но ваше решение работает только с «extends SQLiteOpenHelper» и не работает с «extends SQLiteAssetHelper».