Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android上用SQLite保存字符串数组的最佳方法是什么?_Android_Arrays_Sqlite - Fatal编程技术网

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

在Android上用SQLite保存字符串数组的最佳方法是什么?,android,arrays,sqlite,Android,Arrays,Sqlite,一个字符串大小约为200字节, 它每天存储10~20个大小的数组。 (存储10~20个200字节的字符串,作为数组类型) 我找到了一种将数组转换为字符串的方法 并将其存储在SQLite中。 然而,我不知道这是个好主意 因为字符串的大小很大 一,。 如果字符串数组很大, 将数组存储为字符串是个好主意吗 二,。 还是有更好的办法 我想听听你的建议。谢谢。您实际上把您的问题放在了数据库设计的错误部分 对于SQLite,数据量是10亿字节,因此您对10-20个字符串(每个字符串有200字节)的担心实际上

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

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

一,。 如果字符串数组很大, 将数组存储为字符串是个好主意吗

二,。 还是有更好的办法


我想听听你的建议。谢谢。

您实际上把您的问题放在了数据库设计的错误部分

对于SQLite,数据量是10亿字节,因此您对10-20个字符串(每个字符串有200字节)的担心实际上并没有那么大

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

您的数据库查询时间不会因为字符串太长而变长。这里真正关心的是您将对该字符串进行的处理,以将其转换回数组。通常,如果字符串非常长,那么真正的性能影响是将数组展平为字符串以及将该字符串转换回数组

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

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

  • 将数组展平为单个字符串,并将字符串存储为文本

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

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

例如,如果您的应用程序要求您不断编辑数组的各个元素,您通常会选择第二种实现

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

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

为了回答您的问题,实际上只有两种方法可以将字符串数组作为文本类型存储在SQLite数据库中。这两种方式都有效,真正关心的是考虑哪种解决方案最适合你的需求。 如果您的应用程序每次只需要存储和获取整个数组,那么单字符串方法可能更可取


但是如果你的应用程序要求你处理数组中的单个元素,那么使用table方法会更方便

在表中,每个元素一行。请参阅。