如何正确支持房间数据库中的不同单元?
How to properly support different units in Room Database?
我在 Android 应用程序中使用房间数据库。其中一列代表以毫升 [ml] 为单位的饮料体积。我想知道让用户选择 choose/change 单位到 [cl] 或其他单位的正确方法是什么。
我应该做一个设置选项来选择单位,然后转换我数据库中的所有值吗?
我应该存储例如 [ml] 然后根据用户选择的单位转换值吗?
什么是最有效的方法?什么会减少资源消耗?
你们有一些好的开源 examples/tutorials/code 片段吗?
这实际上取决于转化的数量和复杂程度。
如果您只有一个值 (ML) 并且需要将其转换为另一个值(CL、OZ...),那么您只需将基本单位设置为 DB 并在将它们显示到用户。
如果您觉得这会失控,因为您将有许多值类型并且您将无法跟踪所有这些类型,您可以在数据库中进行转换,这会导致一些开销select 查询。
例如,你有这个 table:
ID unit val
--- --- ---
1 ML 960
2 ML 4112
3 KG 70
4 KG 35
5 C 37
您将始终保持数据库中的基本单位相同,这意味着您不会将它们与 F、OZ 和 LBS 混合使用。
您可以转换 select 查询中的单位:
SELECT id, unit, val,
case when unit = 'ML' then val * 0.033
when unit = 'KG' then val / 2.205
when unit = 'C' then val * 9/5 + 32
end as result
FROM tbl
在这两种情况下,由于这是一个 Android 应用程序,因此工作将通过 SQLite 或应用程序本身完成。
就我个人而言,我不会在同一个 table 上混合单位,因为这会为以后的排序、比较和检索它们增加一层复杂性。
希望对您有所帮助。
我在 Android 应用程序中使用房间数据库。其中一列代表以毫升 [ml] 为单位的饮料体积。我想知道让用户选择 choose/change 单位到 [cl] 或其他单位的正确方法是什么。 我应该做一个设置选项来选择单位,然后转换我数据库中的所有值吗? 我应该存储例如 [ml] 然后根据用户选择的单位转换值吗? 什么是最有效的方法?什么会减少资源消耗? 你们有一些好的开源 examples/tutorials/code 片段吗?
这实际上取决于转化的数量和复杂程度。 如果您只有一个值 (ML) 并且需要将其转换为另一个值(CL、OZ...),那么您只需将基本单位设置为 DB 并在将它们显示到用户。
如果您觉得这会失控,因为您将有许多值类型并且您将无法跟踪所有这些类型,您可以在数据库中进行转换,这会导致一些开销select 查询。 例如,你有这个 table:
ID unit val
--- --- ---
1 ML 960
2 ML 4112
3 KG 70
4 KG 35
5 C 37
您将始终保持数据库中的基本单位相同,这意味着您不会将它们与 F、OZ 和 LBS 混合使用。 您可以转换 select 查询中的单位:
SELECT id, unit, val,
case when unit = 'ML' then val * 0.033
when unit = 'KG' then val / 2.205
when unit = 'C' then val * 9/5 + 32
end as result
FROM tbl
在这两种情况下,由于这是一个 Android 应用程序,因此工作将通过 SQLite 或应用程序本身完成。 就我个人而言,我不会在同一个 table 上混合单位,因为这会为以后的排序、比较和检索它们增加一层复杂性。 希望对您有所帮助。