SQLite 和数据库初始化

SQLite and database initialization

我将第一次在 Android 上使用数据库,但有一件事我不确定是否理解。

问题 1

需要在应用程序中创建数据库;这意味着我需要给这个数据库的creation/initialization一些"time"。这段时间可能会很长,具体取决于我需要存储的数据量,我想知道,我们真的需要在正确的应用程序中创建数据库吗?

我的意思是,创建一个虚拟应用程序来创建和初始化我的数据库,恢复它并将其放入我的真实应用程序中不是更好吗 在我的情况下数据库只是用来读的?

我不明白的另一件事是,因为创建属于应用程序,这意味着每次我启动应用程序时都必须检查数据库是否不存在,对吗?

问题 2

你如何为你的数据库提供数据?您是否将所有数据存储在外部文件中,然后将其转换并在数据库中使用? (JSON?)

如果是这样,在我只需要读取信息的情况下使用数据库有什么意义,我可以对基本文本文件执行相同的操作,例如在值资源中使用 XML 或 . json 原始格式?

您可以创建一个 class 来管理数据库,还可以创建一个 SqliteOpenHelper class 介绍您的 class 之后您应该实施 onCreate 和 onUpgrade 方法,它将创建您的数据库指定名称一次。并且每次用户进入您的应用程序时都无需担心现有数据库

回答 1

并不是说每个应用程序都必须有一个数据库。这取决于应用程序应该做什么。
即使有一个虚拟应用程序可以为真实应用程序创建数据库是可行的,这如何节省工作时间?加载应该总是完成,所以时间总是 "lost".
是的,在第一次启动时,您的应用程序将创建数据库,然后仅 "open" 数据库供其使用。

答案 2

您存储初始数据的位置取决于您实际拥有数据的位置。当然,您可以创建您喜欢的类型的文件。
例如,当您必须查询数据库以从一组数据中提取信息时,数据库很有用。它的运行速度也非常快。如果您的文件很大,每次搜索都会非常非常慢,并且您的应用程序性能对于每个用户来说都是不可接受的。

使用 SQLite 数据库相对简单,您无需担心太多。

关于简单应用程序的 SQLite 的一般信息:

  1. 有一个单独的 class 负责管理您的数据库。 class 扩展了 SqliteOpenHelper,这意味着您将需要覆盖一些负责创建 table 的默认方法。但是这个方法是由系统调用的,而不是你,所以不用担心它们。你配置一次,这样系统就知道你在 table 中需要什么样的列,仅此而已。

  2. 您需要将您自己的方法添加到同一个 class 中,该 add/delete/update/retrieve 数据来自现有数据库。这些是您将要使用的主要方法。

根据上面的说明,您可以看到您不需要检查数据库是否存在。系统为您处理。您只能使用更改数据集的方法。当然,您可以根据需要添加任意数量的方法,这将检查数据库中的许多内容并使您的工作复杂化。

答案一:

我已经在我的应用程序中实现了 SQLite,它 运行 非常快。当然,如果数据太大,您可能需要更长的时间来处理数据。在这种情况下,您需要在后台 运行 所有与 SQLite 数据库相关的进程,这样您的用户界面就不会被冻结。

关于创建一个仅用于保存 SQLite 数据库的虚拟应用程序,在我看来这不是一个好主意。没有足够的经验来判断这是否可能,但如果您设法做到这一点,您将需要等到该应用程序启动然后处理您的数据。

答案2:

您首先需要确定要存储的数据类型。 SQLite 非常适合存储文本和数字。如果您想存储图像,您显然需要使用不同的方法。

我认为您首先需要 运行 通过一些有关 SQLite 的教程并熟悉它。然后您将清楚地了解您可以使用 SQLite 数据库做什么以及如何使用它。一个不错的起点是:https://thenewboston.com/videos.php?cat=6&video=16832