如何将数据包blob存储在数据库中?

时间:2012-05-05 04:21:58

标签: android database bundle

我一直在谷歌搜索一种方法,将bundle转换为适合以BLOB类型存储在数据库中的字符串。我已经找到了很多将它序列化到文件中的例子,但没有提到如何将它放入字符串或字节aray中。谁能给我一个如何做到这一点的例子?

我正在开发一个应用程序,它将使用插件用于自定义UI组件,并希望在插件中调用配置活动,传递存储在数据库中的一组配置选项。该活动将返回包含更新选项的包,然后我需要将其保存回数据库。

如果有人能指出我正确的方向,我将不胜感激。

1 个答案:

答案 0 :(得分:3)

你的第一步是创建一个表来放入它。在这种情况下,应该做一些基本的事情。

CREATE TABLE bundles (
    _id INTEGER PRIMARY KEY AUTOINCREMENT, 
    name TEXT, 
    value BLOB);

然后你需要一个插入Bundle的方法,如下所示:

private void put(SQLiteDatabase db, String name, Bundle bundle) {
    ByteArrayOutputStream valueStream = new ByteArrayOutputStream();
    try {
        ContentValues rows = new ContentValues();
        rows.put("name", name);
        Parcel p = Parcel.obtain();
        bundle.writeToParcel(p, 0);

        valueStream.write(p.marshall());
        rows.put("value", valueStream.toByteArray());

        db.insert("bundles", null, rows);   

        valueStream.close();
    } catch (IOException e) {       
        Log.e("error writing object", e.toString());
    }
}