Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android onUpgrade将一些记录从旧数据库移动到新数据库_Java_Android_Sqlite - Fatal编程技术网

Java android onUpgrade将一些记录从旧数据库移动到新数据库

Java android onUpgrade将一些记录从旧数据库移动到新数据库,java,android,sqlite,Java,Android,Sqlite,我试图实现的是,我的应用程序将附带一个现有的sqlite数据库,该数据库从我的web面板导出,其中包含一些记录(新闻、产品、类别等),然后它将自己的一些记录插入其中(假设它将插入收到的通知),并将复制到databases文件夹,到目前为止,没有问题,但我担心的是,当用户通过市场升级其应用程序时,我想用旧数据库替换新数据库,但保留应用程序生成的记录(它收到的通知)并将其插入新数据库。以下是我目前的代码:(如有必要,请增强) 提前谢谢。我也做了类似的事情。我在应用程序附带的数据库中有默认内容,有时会

我试图实现的是,我的应用程序将附带一个现有的sqlite数据库,该数据库从我的web面板导出,其中包含一些记录(新闻、产品、类别等),然后它将自己的一些记录插入其中(假设它将插入收到的通知),并将复制到databases文件夹,到目前为止,没有问题,但我担心的是,当用户通过市场升级其应用程序时,我想用旧数据库替换新数据库,但保留应用程序生成的记录(它收到的通知)并将其插入新数据库。以下是我目前的代码:(如有必要,请增强)


提前谢谢。

我也做了类似的事情。我在应用程序附带的数据库中有默认内容,有时会发生更改。但是,我有一个用于同步数据库的例程,用于在用户之间进行同步以及与备份进行同步,每次升级数据库时,我都会将包含的数据库与现有用户的数据库进行同步

这对于您的需求来说可能太多了,但这让我想到了如何知道数据是否是用户数据,这似乎是这里真正的问题。您需要确定哪些数据是用户数据。那么你所需要做的就是复制数据

因此,我的建议是在每个数据库表中创建一个名为“IncludedContent”的整数列,并将包含在附带数据库中的所有数据的值设置为1,并将默认值设置为0,这是所有用户内容都将具有的值。然后,您只需使用如下方式连接数据库:

db.execSQL("ATTACH DATABASE ? AS Old_DB", new String[]{fullPathToOldDB});
然后执行如下插入操作以仅复制用户内容:

db.execSQL("INSERT INTO New_DB.TABLE SELECT * FROM Old_DB.TABLE WHERE IncludedContent = 0");
db.execSQL("INSERT INTO New_DB.TABLE SELECT * FROM Old_DB.TABLE WHERE IncludedContent = 0");