没有这样的表:current_user(代码1)NO CHANGING DATABASE NAME

时间:2018-08-07 17:48:53

标签: java android sqlite

我的数据库中最初有一个1(一个)表。然后,我意识到我将在该数据库中添加另一个表。

@Override
public void onCreate(SQLiteDatabase db) {
    String sql = "CREATE TABLE if not exists profile (" +
            "email text primary key not null, " +
            "username text, " +
            "profilePicture text, " +
            "about text)";
    db.execSQL(sql);

    sql = "CREATE TABLE if not exists current_user (" +
            "email text)";
    db.execSQL(sql);

    sql = "INSERT INTO current_user(email)" +
            "VALUES ('')";
    db.execSQL(sql);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    String sql = "DROP TABLE IF EXISTS profile";
    db.execSQL(sql);
    sql = "DROP TABLE IF EXISTS current_user";
    db.execSQL(sql);

    onCreate(db);
}

当我想更新current_user的电子邮件时,它会向我发送异常

public void setCurrentEmail(String email){
    ContentValues rsValues = new ContentValues();
    rsValues.put("email", email);

    database.update("current_user", rsValues, null, null);
}

no such table: current_user (code 1):

其他人说,您必须更改数据库的名称才能使其正常工作,但是 有其他选择吗?

1 个答案:

答案 0 :(得分:0)

如果在更新SQLiteOpenHelper类的代码后没有卸载应用,则必须这样做。
onCreate()方法仅在第一次创建数据库时被调用。因此,现在数据库中没有表current_user
从设备或仿真器上卸载该应用程序,以便删除数据库并重新开始。