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进行了高度优化,因此不会试图与在不同版本的平台中创建的数据保持兼容性。”请参阅