繁体   English   中英

如何在房间数据库中正确支持不同的单元?

[英]How to properly support different units in Room Database?

我在Android应用中使用Room数据库。 列之一代表以毫升[ml]为单位的饮料量。 我想知道给用户选择/将单位更改为[cl]或其他单位的正确方法是什么。 我应该选择一个设置选项来选择单位,然后转换数据库中的所有值吗? 我应该存储例如[ml],然后根据用户选择的单位转换值吗? 最有效的方法是什么? 什么会减少资源消耗? 你们有一些好的开源示例/教程/代码片段吗?

这实际上取决于转换的数量和复杂性。 如果您只有一个值(ML)并需要将其转换为另一个值(CL,OZ ...),则只需将基本单位设置为DB,并在将其显示为用户。

如果您觉得这会变得一发不可收拾,因为您将拥有许多值类型,并且在跟踪所有这些值类型时都会遇到问题,则可以在数据库中进行转换,这会在选择查询上造成一些开销。 例如,您有此表:

ID  unit  val
--- ---   ---
1   ML    960
2   ML    4112
3   KG    70
4   KG    35
5   C     37

您将始终在数据库中保持基本单位相同,这意味着您不会将它们与F,OZ和LBS混合使用。 您可以在选择查询中转换单位:

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或应用程序本身完成工作。 就我个人而言,我不会在同一张表上混合使用单位,因为这会增加一层复杂性,以便以后进行排序,比较和检索。 希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM