如何在现有的 Sqlite 数据库中添加新的 table
How to add a new table in existing Sqlite DB
我在 sqlite 中创建了一个数据库,并在此数据库中创建了一个 table。现在我想在这个数据库中再添加一个 table(posts_table)。
但是当我 运行 应用程序时,数据库中没有创建新的 table
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(
"create table users_table " +
"(id integer primary key, username text)"
);
sqLiteDatabase.execSQL(
"create table posts_table " +
"(id integer primary key)"
);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion ) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS users_table");
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS posts_table");
onCreate(sqLiteDatabase);
}
您需要卸载应用程序(数据库文件将被删除,所有当前数据将丢失)或增加数据库版本号,在这种情况下 onUpgrade方法将被调用,该方法将删除表(如果它们存在并丢失表中的所有数据),然后调用 onCreate 方法。
- 数据库版本号通常是传递给 SQLiteOpenHelper 的第 4 个参数,但如果您使用构造函数传递开放参数(在这种情况下它是第 3 个参数),请参阅 SQLiteOpenHelper
onCreate 方法仅在数据库的生命周期内自动调用一次,以便数据库持久存在。
我在 sqlite 中创建了一个数据库,并在此数据库中创建了一个 table。现在我想在这个数据库中再添加一个 table(posts_table)。 但是当我 运行 应用程序时,数据库中没有创建新的 table
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(
"create table users_table " +
"(id integer primary key, username text)"
);
sqLiteDatabase.execSQL(
"create table posts_table " +
"(id integer primary key)"
);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion ) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS users_table");
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS posts_table");
onCreate(sqLiteDatabase);
}
您需要卸载应用程序(数据库文件将被删除,所有当前数据将丢失)或增加数据库版本号,在这种情况下 onUpgrade方法将被调用,该方法将删除表(如果它们存在并丢失表中的所有数据),然后调用 onCreate 方法。
- 数据库版本号通常是传递给 SQLiteOpenHelper 的第 4 个参数,但如果您使用构造函数传递开放参数(在这种情况下它是第 3 个参数),请参阅 SQLiteOpenHelper
onCreate 方法仅在数据库的生命周期内自动调用一次,以便数据库持久存在。