在Android的SQLite中保存字符串数组的最佳方法是什么?

时间:2019-03-08 03:21:05

标签: android arrays sqlite

一个字符串的大小约为200个字节, 每天存储10〜20个大小。 (以数组类型存储10〜20个200bytes的字符串)

我找到了一种将数组转换为字符串的方法 并将其存储在SQLite中。 但是,我不知道这是一个好主意 因为字符串的大小很大。

1。 如果有大量的字符串, 将数组存储为字符串是个好主意吗?

2。 还是有更好的方法?

我想请教。谢谢。

1 个答案:

答案 0 :(得分:0)

您实际上正在将您的关注点放在数据库设计的错误部分。

对于SQLite,maximum length of a String为10亿字节,因此您对10-20个200字节的字符串的担心实际上并不那么大。

将数组作为单个长字符串存储在数据库中并没有什么害处。尤其是当它离字符串的最大限制不远时。

由于您的字符串很长,您的数据库查询时间不会更长。这里真正关心的是要对该String进行的处理,以将其转换回Array。通常,如果String太长,则真正的性能损失是将数组展平为String以及将该String转换回Array时。

但是,通常情况下,您会向用户显示加载指示。

要将数组存储到数据库中,实际上只有两种方法:

  • 将数组平整为单个String并将该字符串存储为TEXT

  • 创建一个表,用于存储字符串的各个元素,并包括一个外键列,该列使您可以将这些行与同一数组相关联。然后,将String数组的每个元素存储为该表中的一行。

根据您的需求,一种设计比另一种更好。

例如,如果您的应用程序要求您不断编辑数组中的各个元素,则通常希望使用第二种实现。

对于这样的示例,使用第一个解决方案没有多大意义,因为这意味着每次您要编辑数组的内容时,都将完整地获取完整的数组。当您只想获取或编辑该字符串的特定部分时,这是不切实际的。

因此,在这样的示例中,将数组的各个元素存储到用于此类数据的Table的各个行中更为实用。您将仅查询所需的行,并仅更新所需的行。

因此,要回答您的问题,实际上只有两种方法将String数组存储为SQLite数据库中的TEXT类型。两种方法都起作用,真正的关注点是考虑哪种解决方案最适合您的需求。

如果您的应用每次只需要您存储并完整获取数组,则使用单个String方法可能更可取。

但是,如果您的应用程序要求您使用数组的各个元素,那么使用table方法会更加方便。