Как сохранить объект в базе данных sqlite? - PullRequest
30 голосов
/ 07 августа 2009

Можно ли хранить определенные пользователем объекты в базе данных SQLite из Android? Например: я создаю один класс и хочу сохранить этот объект класса в базе данных. Является ли это возможным? Если это так, как действовать? На платформе Blackberry я могу хранить объекты непосредственно в постоянных объектах. Возможно ли это сделать с помощью SQLite и Android?

Ответы [ 3 ]

23 голосов
/ 07 августа 2009

Вам нужно будет иметь возможность сериализации вашего объекта в поток байтов, а затем воссоздать ваш объект из потока байтов.

Затем просто сохраните этот поток байтов в своей базе данных.

EDIT: Прочитайте эту статью , чтобы узнать о сериализации в Java. Он обслуживает эту тему гораздо лучше, чем я мог бы, просто предоставив несколько фрагментов кода.

6 голосов
/ 09 мая 2012

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

1 голос
/ 03 апреля 2019

Используйте этот код для преобразования вашего объекта в байтовый массив и сохранения его в вашей базе данных как "BLOB"

public byte[] makebyte(Dataobject modeldata) {
            try {

                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                ObjectOutputStream oos = new ObjectOutputStream(baos);
                oos.writeObject(modeldata);
                byte[] employeeAsBytes = baos.toByteArray();
                ByteArrayInputStream bais = new ByteArrayInputStream(employeeAsBytes);
                return employeeAsBytes;
            } catch (IOException e) {
                e.printStackTrace();
            }

            return null;
        }

Используйте этот код для повторного преобразования вашего байтового массива в ваш объект

public Dataobject read(byte[] data) {
    try {


        ByteArrayInputStream baip = new ByteArrayInputStream(data);
        ObjectInputStream ois = new ObjectInputStream(baip);
        Dataobject dataobj = (Dataobject ) ois.readObject();
        return dataobj ;

    } catch (IOException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    return null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...