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

Kum*_*mar 31 android

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

Pra*_*ast 23

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

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

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

  • 链接腐烂.更多细节会更好! (4认同)
  • 链接指向Oracle Java启动页面,该页面没有关于序列化的信息 (3认同)

Soh*_*ziz 6

而不是将它们存储在SQLite中,为什么不将它们存储在db4o中,db4o专门用于存储对象.使用db4o编写对象的简单教程.

  • DB4O原则上很棒.它非常易于使用.但不幸的是它有很多错误,开发/维护似乎完全停止了.非常悲伤的情况. (5认同)

小智 5

使用此代码将您的对象转换为字节数组并将其作为“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;
        }
Run Code Online (Sandbox Code Playgroud)

使用此代码再次将您的字节数组转换为您的对象

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;
}
Run Code Online (Sandbox Code Playgroud)