如何将以前的数据库与新版本数据库sqlite合并 - Android

时间:2015-01-07 11:05:18

标签: java android mysql database sqlite

我在Playstore上有一个包含数据库的应用程序 现在在新版本中,数据库已更改,输入了一个新表 目前我正在使用sqlite studio并将数据库文件放入资产中,稍后将其复制为应用程序数据库。请参阅this示例。

我必须删除以前的数据库以复制新的,或者如果我复制新的(覆盖),在这两种情况下用户数据都会丢失。

也许我可以将一个新表附加到当前数据库,但是如果我必须在以前的数据库中的表中添加一列呢? 我该怎么办?

编辑:如果我必须从数据库复制数据并重新插入,我怎么知道我的数据库中当前存在的表和列。

请指导我......

2 个答案:

答案 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数据库上尝试过。