1

如何将新列或新表添加到使用 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;
4

1 回答 1

0

嗨,您可以使用 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 );
        }
    }
}

您可以检查数据库版本。如果应用程序旧版本中的数据库版本运行创建或更改查询查询。

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.
于 2016-10-18T19:20:47.613 回答