2012-05-05 5 views
2

bundleBLOBタイプとしてデータベースに保存するのに適した文字列に変換する方法については、Googleで検索しています。私はそれをファイルにシリアライズする例をたくさん見つけましたが、それを文字列またはバイトアレイに入れる方法については言及していません。誰が私にこれがどのように行われたかの例を教えてもらえますか?データベースblobにバンドルを保存するにはどうすればよいですか?

カスタムUIコンポーネント用のプラグインを使用するアプリケーションを開発しており、データベースに保存された構成オプションのバンドルを渡すプラグインで構成アクティビティを呼び出したいと考えています。アクティビティは更新されたオプションでバンドルを返し、データベースに保存する必要があります。

誰かが私を正しい方向に向けることができれば、私は感謝するでしょう。

答えて

3

あなたの最初のステップは、これを入れるためのテーブルを作成することです。この場合、基本的なことがあります。おかげで..私はこれを試してみるつもりです

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

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

次に、あなたは、このように、Bundleを挿入するための方法が必要になります。私は検索でByteArrayOutputStreamを見つけたわけではありません。 – cstrutton

+0

@cstruttonこれはまだ完璧な解決策ではないかもしれません。私はBundleがシリアライズ可能であるかどうかはわかりません。これは調整が必要な場合があります。私はもっ​​と研究しています。 –

+0

@cstrutton私の更新されたコードを試してみてください。私はそれをテストしていませんが、*動作するはずです。 –

関連する問題