我已经为我的应用程序创建了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)
但由于某种原因,没有创建新表.我究竟做错了什么?
在我正在关注的教程和我看到的更多地方,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)