【发布时间】:2010-11-17 14:37:11
【问题描述】:
是否可以将用户定义的对象存储在 Android 的 SQLite 数据库中?例如:我正在创建一个类,我想将该类对象存储在数据库中。可能吗?如果是,如何进行?在黑莓平台上,我能够将对象直接存储在持久对象中。 SQLite 和 Android 可以做到这一点吗?
【问题讨论】:
标签: android
是否可以将用户定义的对象存储在 Android 的 SQLite 数据库中?例如:我正在创建一个类,我想将该类对象存储在数据库中。可能吗?如果是,如何进行?在黑莓平台上,我能够将对象直接存储在持久对象中。 SQLite 和 Android 可以做到这一点吗?
【问题讨论】:
标签: android
您需要能够将对象序列化为字节流,然后从字节流中重新创建对象。
然后,只需将该字节流存储在您的数据库中。
编辑: 阅读 this article 以了解 Java 中的序列化。它以比我仅仅提供一些代码 sn-ps 更好的方式迎合这个主题。
【讨论】:
使用此代码将您的对象转换为字节数组并将其作为“BLOB”存储在您的数据库中
public byte[] makebyte(Dataobject modeldata) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(modeldata);
byte[] employeeAsBytes = baos.toByteArray();
ByteArrayInputStream bais = new ByteArrayInputStream(employeeAsBytes);
return employeeAsBytes;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
使用此代码再次将您的字节数组转换为您的对象
public Dataobject read(byte[] data) {
try {
ByteArrayInputStream baip = new ByteArrayInputStream(data);
ObjectInputStream ois = new ObjectInputStream(baip);
Dataobject dataobj = (Dataobject ) ois.readObject();
return dataobj ;
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
【讨论】: