【发布时间】:2013-10-21 23:48:50
【问题描述】:
我正在尝试在 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) 不起作用。
老实说,我对此一无所知。你们如何再次序列化、存储、检索和反序列化回对象?
【问题讨论】:
-
I'm trying to store an object (serialized) in SQLite你为什么要这样做?如果您只是要存储序列化的二进制数据,请在平面文件中进行。
标签: java android sqlite intellij-idea