Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.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 如何在数据库blob中存储捆绑包?_Android_Database_Bundle - Fatal编程技术网

Android 如何在数据库blob中存储捆绑包?

Android 如何在数据库blob中存储捆绑包?,android,database,bundle,Android,Database,Bundle,我一直在谷歌搜索一种方法,将捆绑包转换成适合作为BLOB类型存储在数据库中的字符串。我发现了很多将其序列化为文件的示例,但没有提到如何将其放入字符串或字节数组。谁能给我举个例子说明这是如何做到的 我正在开发一个应用程序,将使用插件的自定义UI组件,并希望调用插件中的配置活动,传递存储在数据库中的配置选项包。活动将返回带有更新选项的捆绑包,然后我需要将其保存回数据库 如果有人能为我指出正确的方向,我将不胜感激。您的第一步是创建一个表格,将其放入其中。在这种情况下,应该做一些基本的事情 CREATE

我一直在谷歌搜索一种方法,将
捆绑包
转换成适合作为
BLOB
类型存储在数据库中的字符串。我发现了很多将其序列化为文件的示例,但没有提到如何将其放入字符串或字节数组。谁能给我举个例子说明这是如何做到的

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


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

您的第一步是创建一个表格,将其放入其中。在这种情况下,应该做一些基本的事情

CREATE TABLE bundles (
    _id INTEGER PRIMARY KEY AUTOINCREMENT, 
    name TEXT, 
    value BLOB);
然后需要插入
捆绑包的方法,如下所示:

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

谢谢我要试试这个。我在搜索中没有遇到TearrayOutstream。@cstrutton这可能还不是一个完美的解决方案。我不确定捆绑包是否可序列化。这可能需要调整。我现在正在研究更多内容。@cstruton尝试一下我更新的代码。我还没有测试它,但它应该可以工作。请给出反向过程的代码。如何从数据库取回捆绑包。这不是一个好的解决方案,因为正如文档中所解释的,“您在这里检索的数据不能放在任何类型的持久性存储中(在本地磁盘上,通过网络等)。为此,您应该使用标准序列化或其他类型的通用序列化机制。包裹编组表示法针对本地IPC进行了高度优化,因此不会试图与在不同版本的平台中创建的数据保持兼容性。”请参阅