オブジェクトを(シリアル化された)SQLiteに保存しようとしています。次に、オブジェクトを取得して逆シリアル化し、元のオブジェクトに戻します...
これまでのところ、オブジェクトを格納するためのコードを書くことができました (と思います)。
public void addLookup( LookupData lookupData ){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_PERSON, lookupData.getPersonName());
values.put(KEY_PERSONOBJECT, Serializer.serializeObject(lookupData));
values.put(KEY_DATETIME, lookupData.getDatetime());
db.insert(TABLE_LOOKUPS, null, values);
db.close();
}
しかし、私はデータを再び取り出すのに苦労しています:
public PersonData getLookup( Integer id ){
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_LOOKUPS, new String[] { KEY_ID, KEY_PERSON, KEY_PERSONOBJECT, KEY_DATETIME }, KEY_ID + "=?", new String[] { String.valueOf(id) }, null, null, null, null );
if( cursor != null )
cursor.moveToFirst();
LookupData lookupData = Serializer.deserializeObject(cursor.getBlob(2));
}
deserializeObject は byte[] を想定しているため、IntelliJ は、cursor.getString(2) または cursor.getBlob(2) が機能しないと不平を言っています。
正直なところ、私はこれで私の深さから外れています。どうやってシリアル化、保存、取得、逆シリアル化してオブジェクトに戻しますか?