我在Playstore上有一个包含数据库的应用程序 现在在新版本中,数据库已更改,输入了一个新表 目前我正在使用sqlite studio并将数据库文件放入资产中,稍后将其复制为应用程序数据库。请参阅this示例。
我必须删除以前的数据库以复制新的,或者如果我复制新的(覆盖),在这两种情况下用户数据都会丢失。
也许我可以将一个新表附加到当前数据库,但是如果我必须在以前的数据库中的表中添加一列呢? 我该怎么办?
编辑:如果我必须从数据库复制数据并重新插入,我怎么知道我的数据库中当前存在的表和列。
请指导我......
答案 0 :(得分:0)
从数据库中获取所有数据到ArrayList或其他任何内容(我将建议使用Arraylist)和删除旧数据库,然后创建新数据库并将所有数据插入新数据库。
这不是一个正确的方法,而是一个节省时间的技巧。
干杯
-Aman
答案 1 :(得分:0)
对于新表,您只需在更新方法
中添加create table@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
if(oldVersion < LastVersionWithoutTheTable && newVersion >= LastVersionWithoutTheTable){
db.execSQL(CREATE_THE_TABLE);
}
}
对于新列,请复制数组中的所有数据,重新创建表格并重新插入数据。
可能使用SQL Alter Table但我从不在SQlite数据库上尝试过。