我正在创建一个应用程序,其中包含assets文件夹中的数据库,将数据库称为db1。当我打开应用程序时,再次使用 API' S 创建数据库。两个db名称都相似。
复制db时,我发现使用api创建的db1正在由资产中的db1重写。在这里,我有一个解决方案,首先从资产中复制数据库,然后在java中打开相同的数据库。 在资产文件夹db中,它包含表 A , B , C 以及使用代码创建的数据库表格 A ,乙, C 下,的 d ,电子,˚F
现在我想要的是:
当我为应用程序升级时,我不能盲目地复制资产中的数据库将覆盖 db1 (所有表)中的所有现有数据。我想知道我可以用其他名称复制数据库吗 db2 。然后打开并复制 db2 中的所有表,并用新复制的表覆盖 db1 中的那些表; i, db1 中的 A , B , C 表格必须替换为 db1 中的表格强> DB2
我想知道它是否可能?如果可能,有些人会给我一些样品参考。
答案 0 :(得分:1)
升级应用程序不会强制升级数据库。因此,除非您实际更改了数据库的版本号,否则将传递给SQLiteOpenHelper
的构造函数,旧数据库将无法更改。
如果由于更改了数据库架构而更改了DB的版本号,则必须覆盖onUpgrade
方法,将必要信息从现有DB复制到某个临时位置(或内存),从资产中复制数据库文件并重新插入数据。