相关疑难解决方法(0)

Android:升级数据库版本并添加新表

我已经为我的应用程序创建了sqlite表,但现在我想在数据库中添加一个新表.

我更改了DB版本如下

private static final int DATABASE_VERSION = 2;
Run Code Online (Sandbox Code Playgroud)

并添加字符串以创建表

private static final String DATABASE_CREATE_color = 
   "CREATE TABLE IF NOT EXISTS files(color text, incident_id text)";
Run Code Online (Sandbox Code Playgroud)

onCreate并且onUpgrade,如下:

@Override
    public void onCreate(SQLiteDatabase database) {
        database.execSQL(DATABASE_CREATE_incident);
        database.execSQL(DATABASE_CREATE_audio);
        database.execSQL(DATABASE_CREATE_video);
        database.execSQL(DATABASE_CREATE_image);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //drop table and add new tables when version 2 released.
        db.execSQL(DATABASE_CREATE_color);

    }
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,没有创建新表.我究竟做错了什么?

database sqlite android

114
推荐指数
2
解决办法
9万
查看次数

Android SQLite数据库,为什么删除表并在升级时重新创建

在我正在关注的教程和我看到的更多地方,onUpgrade - > drop table if exists,然后重新创建表.

这样做的目的是什么?

private static class DbHelper extends SQLiteOpenHelper{

    public DbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
                KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                KEY_NAME + " TEXT NOT NULL, " +
                KEY_HOTNESS + " TEXT NOT NULL);"
        );  
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); …
Run Code Online (Sandbox Code Playgroud)

database sqlite android drop-table database-update

29
推荐指数
2
解决办法
4万
查看次数

标签 统计

android ×2

database ×2

sqlite ×2

database-update ×1

drop-table ×1