2012-05-05 108 views
2

我一直在谷歌搜索一種方法來將bundle轉換爲適合作爲BLOB類型存儲在數據庫中的字符串。我發現了很多將它序列化爲文件的例子,但沒有提及如何將它放入字符串或字節aray中。任何人都可以給我一個這樣做的例子嗎?如何將數據包存儲在數據庫blob中?

我正在開發一個應用程序,它將使用自定義UI組件的插件,並且想要調用插件中的配置活動來傳遞存儲在數據庫中的一組配置選項。該活動將返回包含更新選項的包,然後我需要將其保存回數據庫。

如果任何人都可以指出我正確的方向,我將不勝感激。

回答

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

謝謝..我要嘗試了這一點。我在搜索中沒有遇到ByteArrayOutputStream。 – cstrutton

+0

@ cstrutton這可能不是一個完美的解決方案。我不確定Bundle是否可序列化。這可能需要調整。我現在正在研究更多。 –

+0

@ cstrutton試一試我的更新代碼。我沒有測試它,但它*應該*工作。 –

相關問題