Как вставить массив или вектор в базу данных SQLite в Android? - PullRequest
0 голосов
/ 18 февраля 2011

Я новичок в Android. Мне нужно хранить массив или вектор в базе данных (SQLite) в качестве значения для одного из столбцов. Я искал относительно хранения архива или вектора. В том, что они предложили преобразовать arraylist в JSON.

Есть ли другое решение этой проблемы, кроме преобразования массива в JSON. Пожалуйста, дайте мне решение или статью по этому вопросу.

Ответы [ 4 ]

1 голос
/ 18 февраля 2011

Во-первых, если у вас есть ArrayList или Vector of Strings.Затем просто просмотрите его, сохраните каждую строку и управляйте ею с помощью логики вашего приложения.

Если на нем нет строк, просто сериализуйте объект ArrayList над любым файлом.и сохраните имя файла в базе данных

1 голос
/ 18 февраля 2011

Векторы и списки являются структурами данных.Столбцы SQLite принимают только атомарные значения, а именно числа, строки и большие двоичные объекты.

Поэтому вам необходимо сериализовать (преобразовать) вектор / список в одну строку или большой двоичный объект - числа в любом случае не подойдут.Вам придется использовать уникальную обратимую кодировку, которая сохранит любые специальные свойства вашей структуры данных.

Конечно, вы можете заново изобрести колесо и использовать свою собственную кодировку.Или вы могли бы заново изобрести колесо, используя Java Serialization API.Или вы можете использовать что-то вроде JSON, которое является более проверенным решением.

Однако на вашем месте я бы сначала подумал об изменении схемы базы данных.Списки и векторы достаточно близки к реляционной модели, чтобы вы могли сохранить их в базе данных без методов сериализации.

РЕДАКТИРОВАТЬ:

См. Также этот вопрос и это .

0 голосов
/ 18 февраля 2011

В зависимости от вашего приложения и вариантов его использования я бы создал отдельную таблицу в базе данных для ваших данных ArrayList (с отношениями один-ко-многим или многие-ко-многим) и запросил бы их отдельно.

Да, это определенно добавит некоторую сложность вашему приложению, но это будет более надежное и отказоустойчивое решение (не говоря уже о более элегантном; -)

Однако это трудно исправитьочень простой случай использования, когда дублирующиеся элементы ArrayList не встречаются ...

0 голосов
/ 18 февраля 2011

как вы можете сохранить объект памяти в БД?:) вы должны сериализовать его в строку.независимо от того, что вы будете использовать.xml, json, ваш собственный метод toString.просто выберите то, что вам легче сериализовать и десериализовать объекты.JSON кажется хорошей идеей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...