2013-01-18 82 views
0

我有一个问题。已关联的SQLite数据库。使用新版本更新后,SQLite可以使用旧版本吗?

更新version号码1后,我的数据库更新了onUpgrade()

1-我想知道,我可以使用较旧的数据库或不使用。

onUpgrade()我使用db.drop("previous table");

2-以便丢弃该表后,我可以从该与否的数据。

请详细解释。

任何好的建议将被接受。

编辑: - 我们可以使用较旧版本的数据库或没有。

+0

我想知道是否有可能使用新版本 – Unknown

回答

1

不,您不能访问之后的旧表下拉式表格就像是删除操作 - 您不应轻易重新获得对它的访问权限。从第一link我从我的搜索引擎有:

删除表格中删除表定义以及所有其 行。

如果您仍然需要您以前的数据,我建议仍然使用该数据库,并且不要放弃它,直到您觉得它不再需要为止。 This SO答案涉及到很多关于如何正确升级表格的细节。需要注意的一个有趣的事情是,如果你决定使用ALTER TABLE

SQLite是在ALTER TABLE命令有限的,它允许添加和重命名 只有没有删除/下降这与娱乐做的表格。

所以有这个工作的多种方式 - ALTER TABLE是很好,如果你有一个小东西改变,你不必摧毁一切,但如果你需要至少一列/行删除你”重新想要跟随答案并创建临时表。

+0

更新旧版本的数据库,如果我更改该数据库的版本,它将丢失数据或将有 – Unknown

+0

确定AC AC one more thing什么是正确的位置创建表格。 – Unknown

+0

@Cobra如果你升级版本号,它应该调用'onUpgrade()',所以如果你删除,你将无法访问数据,但是如果你改变了,你仍然可以访问数据。 [这](http://stackoverflow.com/questions/3424156/upgrade-sqlite-database-from-one-version-to-another)所以问题进入了很多细节。 **编辑:**你是什么意思创建表的正确位置?你的数据库帮助类有一些明确定义的方法。 –

1

如果您想继续使用该表的数据,请勿删除它。改用ALTER TABLE语句来添加新的字段。

+0

这会发生在onUpgrage()..正确的 – Unknown

+0

是的,这是一个很好的地方。 –

+0

Gabe ..我想知道什么是正确的地方创建一个表,为什么那个地方只有.....请解释和编辑你的答案。 – Unknown

1

不需要。您需要做的是获取数据副本(无论是在内存中还是在其他数据库中),重新创建数据库,然后写回数据。

这当然只有当您需要为升级过程丢弃一个或多个表时。对于添加新列等简单情况,不需要删除/重新创建表;因此简化了流程。

+0

我如何复制旧数据库版本..有任何链接 – Unknown

+0

一种方法是将其读入内存。您也可以复制该文件。有很多关于如何复制文件的例子;用Google搜索“sqlite android copy database”之类的东西。另一种方法是创建第二个数据库并将其用作临时存储。总而言之,如果数据库很小,读入内存是最好的选择。 – SylvainL

相关问题