【问题标题】:SQLite good practices & ContentProviderSQLite 良好实践和 ContentProvider
【发布时间】:2017-01-26 16:10:00
【问题描述】:

目标

我想问几个关于 Android 应用解决方案实施的问题。

上下文

我们的应用程序有一个 SQlite 数据库。我们还使用ContentProvider 轻松管理数据库数据的更改并在发生更改时得到通知。

应用程序有一个Activity,其中包含一个ViewPager 和4 个Fragment。这 4 个 Fragment 中有 2 个使用公共数据。

问题

假设我们存储用户的信用卡数据。他可能在数据库中保存了几张卡片,所以我们需要知道哪一张是活动的

我只能想到 2 个解决方案。

  1. 保存在Preferences
  2. 在信用卡表中添加一个活动字段

第二种解决方案的示例:

╔════════════════╦═════════════╦═══════════════╦════════╗
║      name      ║     id      ║ secret_number ║ active ║
╠════════════════╬═════════════╬═══════════════╬════════╣
║ personal visa  ║ 02468024680 ║           659 ║ true   ║
║ company visa   ║ 13579135791 ║           362 ║ false  ║
╚════════════════╩═════════════╩═══════════════╩════════╝

我认为第二个更好,因为ContentProvider 会在 active 卡发生变化时通知我们的 Fragments,并且他们将能够反映那一刻的变化。

问题

但是,我不确定这是否在good practices 内,因为它可能会导致问题,例如将多行标记为活动。除此之外,我还想问是否有任何方法可以用一条 sql 语句更新所有行,我的意思是,active 一条,其余的设置为 false

提前致谢。

【问题讨论】:

  • 嗨,欢迎来到 Stack Overflow。 SO 是一个编程问题的问答平台,而不是一个讨论论坛。请先阅读:stackoverflow.com/help/on-topic

标签: android database sqlite android-sqlite android-contentprovider


【解决方案1】:

一旦我找到了一次更新所有行的方法,我就会去做。

我只需要使用CASE WHEN ... THEN ... ELSE ... END 声明,我忘记了它的存在!

找到它here

【讨论】:

    猜你喜欢
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 2019-01-18
    • 2011-03-09
    相关资源
    最近更新 更多