首次启动应用程序时用初始数据填充本地数据库(sqlite)

Posted

技术标签:

【中文标题】首次启动应用程序时用初始数据填充本地数据库(sqlite)【英文标题】:Fill local database(sqlite) with initial data at first time application starts 【发布时间】:2018-09-27 14:34:30 【问题描述】:

我的问题:

我正在开发一个带有本地(sqlite)数据库的控制台应用程序。我有很多对象应该在第一次启动时加载到数据库中。我让它工作了,但问题是我需要在类中的应用程序中对所有这些对象进行硬编码,初始化它们,然后填充数据库。对我来说,在我的应用程序中硬编码 25 多个对象似乎很混乱。

我正在考虑制作一个特殊的程序集来初始化数据库。但我仍然会将所有这些对象硬编码到我的应用程序中。

我的问题

    制作单独的程序集是否是组织应用程序的好方法,如果不是 如何避免在我的应用程序中硬编码这 25 多个对象?

    有没有更好的方法来存储这些对象而不是在类中?

【问题讨论】:

如果您愿意,可以为它们创建单独的程序集。但是您也可以将它们保留在同一个项目中,我认为这没有任何问题。将所有类放在一个文件夹中。我不知道您为什么称其为“硬编码”,它们不是硬编码的,您是从数据库中加载它们的。如果将它们移动到另一个程序集,则代码将是相同的,除了在单独的项目而不是子文件夹中。 【参考方案1】:

您可能应该使用 JSON 文件。您以与模型匹配的格式对该文件中的所有数据进行编码,因此在启动时,您的程序可以轻松解析文件,并且可以创建您需要的对象,而无需硬编码任何东西。 JSON 格式是理想的,因为它易于手工编译,易于代码阅读。

【讨论】:

以上是关于首次启动应用程序时用初始数据填充本地数据库(sqlite)的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 sqldelight 从本地资源加载预填充的数据库

如何在首次运行时填充 Android Room 数据库表?

AnyLogic:在模拟启动时用代理填充托盘架

启动时带有数据的应用程序

核心数据+本地化

获取初始记录