如何在现有 Sqlite DB 中添加新表
Posted
技术标签:
【中文标题】如何在现有 Sqlite DB 中添加新表【英文标题】:How to add a new table in existing Sqlite DB 【发布时间】:2021-07-04 23:20:52 【问题描述】:我在 sqlite 中创建了一个数据库,并在这个数据库中创建了一个表。现在我想在这个数据库中再添加一个表(posts_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);
【问题讨论】:
【参考方案1】:您需要卸载应用程序(数据库文件将被删除,所有当前数据将丢失)或增加数据库版本号,在这种情况下将调用 onUpgrade 方法将删除表(如果它们存在,则会丢失表中的所有数据),然后调用 onCreate 方法。
数据库版本号通常是传递给 SQLiteOpenHelper 的第 4 个参数,但如果您使用构造函数来传递开放参数(在这种情况下它是第 3 个参数),请参阅SQLiteOpenHelperonCreate 方法只会在数据库的生命周期内自动调用一次,以便数据库持续存在。
【讨论】:
以上是关于如何在现有 Sqlite DB 中添加新表的主要内容,如果未能解决你的问题,请参考以下文章
在 EF 6 和 MVC 5 中使用 Code First 方法将新表添加到现有数据库