Как добавить новый столбец или таблицу в базу данных sqlite, предварительно заполненную в активах и использующую SQLiteAssetHelper

#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».