如何在android中将arraylist或vector插入SQLite数据库?

Posted

技术标签:

【中文标题】如何在android中将arraylist或vector插入SQLite数据库?【英文标题】:How to insert arraylist or vector into SQLite Database in android? 【发布时间】:2011-02-18 09:56:55 【问题描述】:

我是 android 新手。我需要将数组列表或向量存储在数据库(SQLite)中作为其中一列的值。我搜索了有关存储数组列表或向量的信息。他们建议将 arraylist 转换为 JSON。

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

【问题讨论】:

【参考方案1】:

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

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

当然,您可以重新发明***并使用自己的编码。或者您可以通过使用 Java 序列化 API 来重新发明***。或者你可以使用 JSON 之类的东西,这是一个更久经考验的解决方案。

但是,如果我是你,我会首先考虑更改数据库架构。列表和向量与关系模型足够接近,您可能无需序列化技术就可以将它们存储在数据库中。

编辑:

另请参阅this question 和 this one。

【讨论】:

如果您关心存储大小和检索速度,blob 是您的最佳选择......对于很多应用程序来说,这是正确的选择 @ErikAronesty:没错,只要您不需要处理数据结构的特定元素。重复检索一个包含 1,000,000 个元素的列表,每次只获取几个元素,效率极低。【参考方案2】:

首先,如果您有 Strings 的 ArrayList 或 Vector 。然后简单地遍历它并存储它的每个字符串并由您的应用程序逻辑管理它。

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

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

然而,对于一个非常简单的用例,其中不会出现重复的 ArrayList 项目,这很难纠正......

【讨论】:

以上是关于如何在android中将arraylist或vector插入SQLite数据库?的主要内容,如果未能解决你的问题,请参考以下文章

在Android中将ArrayList转换为String数组

如何在TX中将txt行复制到ArrayList中?

在 Android 中将 ksoap 对象绑定到 ArrayList 时遇到问题

在android中将arraylist <String>值插入sqlite

如何在 Android 中将 JSONArray 转换为 ListView? [复制]

如何在 Android Studio Java 中将数组上传到 Firestore 数据