如何在sqlite数据库中存储对象?

时间:2009-08-07 06:18:19

标签: android

是否可以将用户定义的对象存储在Android的SQLite数据库中?例如:我正在创建一个类,我想将该类对象存储在数据库中。可能吗?如果是,怎么办?在Blackberry平台上,我能够将对象直接存储在持久对象中。是否可以使用SQLite和Android执行此操作?

3 个答案:

答案 0 :(得分:23)

您需要能够将对象序列化为字节流,然后从字节流中重新创建对象。

然后,只需将该字节流存储在数据库中。

编辑: 阅读this article以了解Java中的序列化。它通过提供一些代码片段以比我能够更好的方式迎合主题。

答案 1 :(得分:6)

而不是将它们存储在SQLite中,为什么不将它们存储在专为存储对象而设计的db4o中。使用db4o编写对象的简单tutorial

答案 2 :(得分:1)

使用此代码将您的对象转换为字节数组,并将其存储为数据库中的“ 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;
}