为什么我们需要将SQLite数据库复制到assets文件夹中?

3

这里存在一些困惑。

在很多例子中,我发现他们将数据库复制到assets文件夹中。

我不知道他们为什么要这样做,以及这样做的好处是什么。

是否有人可以解释一下呢?谢谢。


Nezam,我们这里不是在玩,能详细解释一下吗? - Monty
当数据库位于断言文件夹中时,用户无法删除数据库文件。 - kumar_android
Kumar,你的意思是如果我在SD卡中创建了数据库并将其复制到资产文件夹中...我无法删除位于SD卡中的文件。 - Monty
如果您将数据库复制到assert文件夹中,则它是apk文件的一部分。因此,用户无法修改/删除数据。 - kumar_android
3个回答

4

通常情况下,预设数据和表格结构的数据库会被预先建立并包含在资产文件夹中。然后,在运行时我们将其从资产文件夹复制到内部或外部存储器中。因为资产文件夹在编译时是只读的,我们无法修改其中的数据。所以为了能够通过我们的应用程序写入数据库,我们必须首先将其复制到我们可以访问的存储器的一部分。


Raghav,如果我想把我的数据库存储在外部存储器中。 - Monty
@CobraHissssHissss.....然后使用普通的Java IO从您的资源中复制它。请记住,如果将其放在外部存储上,则具有访问权限的任何应用程序都可以访问它。 - Raghav Sood

2
有时候,您可能希望有一些预先准备好数据的数据库。比如通讯录或邮政编码等信息。如果您不把这些信息放在资产文件夹中,那么建立基本信息将会很麻烦(当然,您可以通过网络获取数据,但这不是重点)。

0

有一些好的理由,比如:

1- 使用一些 GUI 工具(如 SQLiteBrowser 等)在 Android 环境之外创建数据库非常容易。

2- 如果您想要一些默认数据,也可以轻松实现。您可以在 Android 环境之外插入您的默认数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接