【问题标题】:Generic SqliteopenHelper Class for all activity所有活动的通用 SqliteopenHelper 类
【发布时间】:2012-12-09 02:58:19
【问题描述】:

我的项目中有两个数据库文件。

  1. 在 assets 文件夹中可用(使用 SqliteOpenHelper 类打开)
  2. 在运行时创建(使用 SqliteOpenHelper 类创建和打开)

最佳做法是什么?

  • 分别保留两个数据库并使用两个不同的类(扩展 SqliteOpenHelper 类)打开它们
  • 保留资产数据库并在现有数据库中创建额外的表并使用相同的 Helper 类

我正在尝试对评估数据库和运行时创建数据库使用相同的 Helper 类。

我的应用程序也有带有多个片段和多个游标加载器的活动。我需要为 sqlite 使用通用帮助器类。

【问题讨论】:

  • 我不认为SqliteOpenHelper 可以处理资产数据库。它需要数据库文件在数据库文件夹中
  • 是的。数据库文件应该从 assets 文件夹复制到数据库文件夹。然后正常使用 SQLiteOpenHelper。我的问题是,如果我有一些其他表,我可以将这些表添加到现有的数据库文件中还是创建一个使用 SQLiteOpenHelper 创建新的数据库文件并在新的数据库上创建这些表。我知道我们可以做到这一点。但是在这个方法中,两个类扩展了 SQLiteOpenHelper。为了减少编码,我尝试使这两个类相同。
  • 你必须解释每个数据库的职责是什么。为什么首先需要两个? .. 答案完全取决于这些。

标签: android oop android-sqlite


【解决方案1】:

我建议您将 sqlite db 文件从资产复制到 onCreateSQLiteOpenHelper 的文件目录 (/data/data/files/) 中,然后如果您需要在运行时创建额外的表,您可以使用相同的数据库。这样可以减少使用 2 个 sqlite 文件和 2 个帮助类的开销。

【讨论】:

    【解决方案2】:

    始终尝试基于松散耦合进行设计,

    所以你应该做一个类来进行sql操作,如果你需要不同的参数或不同的表,你应该封装它们。也许你可以创建一个 tableFactory ?但是你应该设计你的代码更加内聚和松耦合......

    【讨论】:

      猜你喜欢
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2013-09-09
      • 2016-08-21
      相关资源
      最近更新 更多