首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从SQLite存储和检索对象

从SQLite存储和检索对象
EN

Stack Overflow用户
提问于 2013-10-22 07:48:50
回答 3查看 9.9K关注 0票数 2

我正在尝试将一个对象(序列化的)存储在SQLite中,然后检索该对象并将其反序列化为原始对象...

到目前为止,我已经成功地编写了存储对象的代码(我想)

代码语言:javascript
运行
复制
public void addLookup( LookupData lookupData ){
    SQLiteDatabase db = this.getWritableDatabase();


    ContentValues values = new ContentValues();
    values.put(KEY_PERSON, lookupData.getPersonName());
    values.put(KEY_PERSONOBJECT, Serializer.serializeObject(lookupData));
    values.put(KEY_DATETIME, lookupData.getDatetime());

    db.insert(TABLE_LOOKUPS, null, values);
    db.close();
}

但是我又在努力把数据弄出来:

代码语言:javascript
运行
复制
public PersonData getLookup( Integer id ){
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.query(TABLE_LOOKUPS, new String[] { KEY_ID, KEY_PERSON, KEY_PERSONOBJECT, KEY_DATETIME }, KEY_ID + "=?", new String[] { String.valueOf(id) }, null, null, null, null );
    if( cursor != null )
        cursor.moveToFirst();
    LookupData lookupData = Serializer.deserializeObject(cursor.getBlob(2));
}

因为deserializeObject期望byte[],所以IntelliJ抱怨cursor.getString(2)或cursor.getBlob(2)不能工作。

老实说,我对此已经不在行了。你们如何再次序列化、存储、检索和反序列化为对象?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-22 08:11:17

正如评论所说,这几乎总是不如对二进制数据使用平面文件。

如果需要将文件链接到表中的每一行,最好的方法是将URI存储为字符串。

此问题可能有助于让URI保存并从URI Can I get Uri of image file from its name?中查找文件

票数 2
EN

Stack Overflow用户

发布于 2013-10-22 09:38:37

使用Ormlite框架,它提供了一些简单、轻量级的功能来将Java对象持久化到SQL数据库中

票数 2
EN

Stack Overflow用户

发布于 2013-10-22 09:44:01

greenDAO是一个用于Android/SQLite的简单、轻量级的对象关系映射库。它很容易设置,而且可能更符合您要做的事情,只要您的源数据被结构化到映射到数据库表的类中,并且具有映射到数据库字段的成员数据。它还可以处理一对一和一对多映射。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19506725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档