繁体   English   中英

如何在Android中的SQLite数据库中插入arraylist或vector?

[英]How to insert arraylist or vector into SQLite Database in android?

我是Android新手。 我需要将arraylist或vector存储在数据库(SQLite)中作为其中一个列的值。 我搜索了关于存储arraylist或矢量。 他们建议将arraylist转换为JSON。

除了将arraylist转换为JSON之外,还有其他解决方案吗? 请给我一个关于这个问题的解决方案或文章。

首先,如果你有一个ArrayList或Vector of Strings。 然后只需遍历它并存储其每个字符串并通过应用程序逻辑进行管理。

如果它没有携带字符串,那么只需在任何文件上序列化ArrayList对象。 并将文件名保留在数据库中

向量和列表是数据结构。 SQLite列只接受原子值,即数字,字符串和blob。

因此,您需要将矢量/列表序列化(转换)为单个字符串或blob - 无论如何数字都不会。 您必须使用唯一可逆的编码,并保留数据结构的任何特殊属性。

当然,你可以重新发明轮子并使用自己的编码。 或者你可以通过使用Java Serialization API来重新发明轮子。 或者你可以使用类似JSON的东西,这是一个更有用的解决方案。

但是,如果我是你,我首先考虑更改数据库架构。 列表和向量与关系模型非常接近,您可以在没有序列化技术的情况下将它们存储在数据库中。

编辑:

另见这个问题这个 问题

如何将内存对象存储到db? :)你应该将它序列化为字符串。 不管你会用什么。 xml,json,你自己的toString方法。 只需选择更容易序列化和反序列化对象的内容。 json似乎是一个好主意

根据您的应用程序及其用例,我将在数据库中为您的ArrayList数据创建一个单独的表(具有一对多或多对多关系),并分别查询它们。

是的,它肯定会给您的应用程序增加一些复杂性,但它将是一个更强大和容错的解决方案(更不会说更优雅;-)

然而,对于一个不会发生重复ArrayList项的非常简单的用例,这很难纠正...

暂无
暂无

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

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