我想更新应用商店中现有应用的数据库(适用于新版本)。所以我需要在使用app之前删除现有的数据库,否则我可以更改数据库的名称。之后如果我的旧数据库中存在数据,我必须获取所有数据并将其再次插入到我的新sqlite文件中。
这似乎是一个缓慢的过程。我的用户不想丢失数据。有没有其他方法可以让我轻松更改现有应用程序的数据库,而不会丢失任何数据。
答案 0 :(得分:1)
首先,您需要检测数据库是否为旧数据库。一种方法是使metadata
表具有名称/值文本列(value
是保留字,因此使用不同的列名称)并将当前的schemaVersion保留在那里。如果这不存在,那么您知道它是旧版本,但从现在开始,您需要在这些更新期间保持schenaVersion最新。您可以在该表中保留有关数据库本身的其他信息。
如果数据库根本不同,那么您需要使用您建议的第二种方法:
或者,如果更改没有明显不同,则可以使用ALTER TABLE语句来修改架构。这是更好的方法,因为如果没有从模式中删除列,它会保留值。