2012-02-19 60 views
5

请原谅我,如果这个问题已经得到解答 - 我搜索并找不到它。更新Android应用程序的策略(带数据库)

我有一个Android应用程序,我想升级,它使用SQLite数据库。我想更新应用程序中的一些应用程序逻辑,但是不会更新数据库模式或内容。我基本上需要保持数据库完全按照用户的原样。

我是否需要在onUpgrade中执行任何操作以确保数据库保持不变或者我可以为此更新单独保留数据库内容?

回答

4

This related article may help you with your question。

我理解它的方法是,如果您想在不同版本之间进行更新,则需要将数据库更改代码置于onUpdate()中。但是,既然你不打算,并且可能保持数据库版本相同,那么你很可能根本没有任何问题。

+1

这不是一个可能性问题。 sqlite将保留其版本之间的结构和数据。仅在版本之间。具有不同签名密钥的同一应用不访问其先前占用的沙箱,因此不管该沙箱是否仍然存在。 UPVOTED :) – 2016-11-04 11:24:54

5

onUpgrade()方法用于版本更改。这意味着存储在手机中的数据库需要更改或删除或删除,并创建一个新的数据库。由于您的应用程序没有任何这些要求,因此您可以将数据库内容留给此更新。

+0

有点混乱,m8。我理解(并同意)你的意思,但它的写法,听起来像SQLite将在版本之间重新创建,情况并非如此。 – 2016-11-04 11:26:50

1

升级不会干扰SQLite。除非以编程方式(在onUpgrade方法中)或卸载并重新安装应用程序,否则不会执行对数据库结构的更改。

只要它是您正在升级的同一应用程序,您的数据库不会受到影响,您的数据也不会受到影响。如果您更改用于构建apk的签名密钥,那么您的数据库将被重新创建。相反,如果您在任何给定点更改数据库结构,您的onUpgrade方法将发挥作用。您将被迫备份,删除,重新创建和重新填充版本之间已更改的表(其他表在结构和数据中均保持不变)。

注:在调试中,我只是卸载并重新安装应用程序,每次我做数据库更改,但在生产中,你不想这样做。