SQLite 良好实践和 ContentProvider
SQLite good practices & ContentProvider
目标
我想问几个关于 Android 应用解决方案实施的问题。
上下文
我们的应用程序有一个 SQlite 数据库。我们还使用 ContentProvider
轻松管理数据库数据的更改,并在发生更改时得到通知。
该应用程序有一个 Activity
,其中包含一个 ViewPager
和 4 个 Fragment
。这 4 个 Fragment
中有 2 个使用通用数据。
问题
假设我们存储了用户的信用卡数据。他可能有几张卡保存在数据库中,所以我们需要知道哪一张是 active.
我只能想到2个解决方案。
- 保存在
Preferences
- 在信用卡中添加一个活动字段table
第二种解决方案的示例:
╔════════════════╦═════════════╦═══════════════╦════════╗
║ name ║ id ║ secret_number ║ active ║
╠════════════════╬═════════════╬═══════════════╬════════╣
║ personal visa ║ 02468024680 ║ 659 ║ true ║
║ company visa ║ 13579135791 ║ 362 ║ false ║
╚════════════════╩═════════════╩═══════════════╩════════╝
我认为第二个更好,因为 ContentProvider
会在 active 卡更换时通知我们的 Fragments
,他们将能够反映那一刻的变化。
问题
但是,我不确定这是否在 good practices
内,因为它可能会导致问题,例如将多行标记为 活动 。除此之外,我还想问一下是否有任何方法可以用一个 sql 语句更新所有行,我的意思是 active 一个并将其余设置为 假.
提前致谢。
一旦我找到了一次更新所有行的方法,我就会去做。
我只需要使用 CASE WHEN ... THEN ... ELSE ... END
语句,我忘记它存在了!
找到了 here
目标
我想问几个关于 Android 应用解决方案实施的问题。
上下文
我们的应用程序有一个 SQlite 数据库。我们还使用 ContentProvider
轻松管理数据库数据的更改,并在发生更改时得到通知。
该应用程序有一个 Activity
,其中包含一个 ViewPager
和 4 个 Fragment
。这 4 个 Fragment
中有 2 个使用通用数据。
问题
假设我们存储了用户的信用卡数据。他可能有几张卡保存在数据库中,所以我们需要知道哪一张是 active.
我只能想到2个解决方案。
- 保存在
Preferences
- 在信用卡中添加一个活动字段table
第二种解决方案的示例:
╔════════════════╦═════════════╦═══════════════╦════════╗
║ name ║ id ║ secret_number ║ active ║
╠════════════════╬═════════════╬═══════════════╬════════╣
║ personal visa ║ 02468024680 ║ 659 ║ true ║
║ company visa ║ 13579135791 ║ 362 ║ false ║
╚════════════════╩═════════════╩═══════════════╩════════╝
我认为第二个更好,因为 ContentProvider
会在 active 卡更换时通知我们的 Fragments
,他们将能够反映那一刻的变化。
问题
但是,我不确定这是否在 good practices
内,因为它可能会导致问题,例如将多行标记为 活动 。除此之外,我还想问一下是否有任何方法可以用一个 sql 语句更新所有行,我的意思是 active 一个并将其余设置为 假.
提前致谢。
一旦我找到了一次更新所有行的方法,我就会去做。
我只需要使用 CASE WHEN ... THEN ... ELSE ... END
语句,我忘记它存在了!
找到了 here