2011-10-09 71 views
0

我有一个关于android数据库的问题。我有一个应用程序,它有数据库资产folder.This应用程序已经安装在手机上,工作正常。但现在我创建了另一个数据库文件(只需增加前一个数据库中的记录数和其他所有内容都是相同的)。并将其重新放在资产文件夹中,并将其替换为现有的数据库文件,然后重新编译该项目。现在在模拟器中,新数据库正在加载并显示数据库中更新的内容。但是当我在手机中再次安装应用程序时,我以前的数据库显示出来并且新的数据库未加载。 但是,如果我从手机上卸载应用程序并重新安装它,那么新的数据库显示出来。在手机上的Android数据库

问题:我只是希望如果我替换手机上预先存在的应用程序,应该加载新的数据库,而不是卸载后重新安装应用程序。 任何建议或帮助?

回答

0

在Android中,您必须使用onUpgrade函数从先前版本更新数据库。这是因为Android只会创建一次你的数据库,从那时起它只会使用那个数据库。因此,您必须将版本代码分配给与旧版本不同的新数据库,并使用onUpgrade实际执行对新数据库的更改。所有从头开始安装的设备都没有当前数据库,因此他们正在为它们创建新的设备。

+0

感谢您的回复:onUpgrade方法将在我第一次启动我的活动时调用。它与安装应用程序有关?我的意思是如果我更换应用程序,那么一切都应该被替换,包括资产文件夹中的数据库 – Sunny

+0

要取代应用程序,你需要做一个完整的卸载。当你运行adb来安装你的应用程序时,它实际上是在重新安装,它不会清除存储的应用程序数据。 – Bobbake4

0

我敢打赌,如果您在“设置”中清除了应用的数据并重新启动它,它应该加载新的数据库。原因是SQLiteOpenHelper将数据库从APK中的assets文件夹复制到手机上应用程序的数据目录(如果它尚不存在)。否则,它将加载手机上的一个。除非您每次都从资产文件夹专门访问数据库,否则它将使用缓存版本。

相关问题