【问题标题】:What is the best way to save a string-array in SQLite on Android?在 Android 上的 SQLite 中保存字符串数组的最佳方法是什么?
【发布时间】:2019-07-30 01:48:18
【问题描述】:
一个字符串大小约为200字节,
它在每日数组中存储 10~20 个大小。
(存储10~20个200bytes的字符串,为数组类型)
我找到了一种将数组转换为字符串的方法
并将其存储在 SQLite 中。
但是,我不知道这是个好主意
因为字符串的大小很大。
1。
如果是大型字符串数组,
将数组存储为字符串是个好主意吗?
2。
还是有更好的方法?
我想要建议。谢谢。
【问题讨论】:
标签:
android
arrays
sqlite
【解决方案1】:
您实际上将您的顾虑放在了数据库设计的错误部分。
对于 SQLite,maximum length of a String 是 10 亿字节,因此您对每个 200 字节的 10-20 个字符串的担忧实际上并没有那么大。
将数组作为单个长字符串存储在数据库中确实没有什么害处。尤其是当它远未接近字符串的最大限制时。
由于您的字符串较长,您的数据库查询时间不会变长。这里真正关心的是您将对该字符串进行的处理以将其转换回数组。通常,如果字符串非常长,真正的性能损失是当您将数组展平为字符串以及将该字符串转换回数组时。
但是,通常情况下,您会向用户显示加载指示器。
要将数组存储到数据库中,实际上只有两种方法:
根据您的需要,一种设计比另一种更好。
例如,如果您的应用需要您不断编辑数组的各个元素,您通常会更喜欢第二种实现方式。
对于这样的示例,使用第一个解决方案没有多大意义,因为这意味着每次您想要编辑数组的内容时,您都将完整地取回整个数组。当您只想获取或编辑该字符串的特定部分时,这是不切实际的。
因此,在这样的示例中,将数组的各个元素存储到用于此类数据的 Table 的各个行中更为实用。您将仅查询所需的行并仅更新所需的行。
所以要回答您的问题,实际上只有两种方法可以将您的 String 数组作为 TEXT 类型存储在 SQLite 数据库中。两种方式都有效,真正关心的是考虑哪种解决方案最适合您的需求。
如果您的应用只要求您每次都存储和获取整个数组,那么单个 String 方法可能更可取。
但是,如果您的应用要求您处理数组中的各个元素,那么使用 table 方法会更方便。