Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在sqlite数据库中存储对象?_Android - Fatal编程技术网

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

Android 如何在sqlite数据库中存储对象?,android,Android,是否可以从Android将用户定义的对象存储在SQLite数据库中?例如:我正在创建一个类,我想将该类对象存储在数据库中。可能吗?如果是,如何进行?在Blackberry平台上,我可以将对象直接存储在持久对象中。使用SQLite和Android可以做到这一点吗?您需要能够将对象序列化为字节流,然后从字节流重新创建对象 然后,只需将该字节流存储在数据库中 编辑: 阅读以了解Java中的序列化。它以一种比我仅仅给出一些代码片段更好的方式来迎合主题。与其将它们存储在SQLite中,不如将它们存储在SQ

是否可以从Android将用户定义的对象存储在SQLite数据库中?例如:我正在创建一个类,我想将该类对象存储在数据库中。可能吗?如果是,如何进行?在Blackberry平台上,我可以将对象直接存储在持久对象中。使用SQLite和Android可以做到这一点吗?

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

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

编辑:
阅读以了解Java中的序列化。它以一种比我仅仅给出一些代码片段更好的方式来迎合主题。

与其将它们存储在SQLite中,不如将它们存储在SQLite中,后者是专门为存储对象而设计的。使用db4o对对象进行排序的简单方法。

使用此代码将对象转换为字节数组,并将其作为“BLOB”存储在数据库中


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

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;
}

你能给我一些代码片段来做对象的序列化吗?我编辑了答案,并给了一篇文章的链接,这篇文章教你如何做对象序列化。链接指向Oracle Java的起始页,其中没有关于序列化的信息。再详细一点就更好了!我的印象是,SQLite实际上用于在DB中快速存储对象。我在其他应用程序中使用过它。我们真的不能像在非Android应用程序中那样使用SQLite吗?如果必须执行SQL语句,那么为什么要在android上使用SQLite呢?我不明白。为什么他们会包括SQLite呢?原则上DB4O是很棒的。它非常容易使用。但不幸的是,它有很多bug,开发/维护似乎已经完全停止。非常可悲的情况。
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;
}