簡體   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