目标是将数据库行转换为Google Play游戏服务的已保存游戏快照,然后检索这些行并将其插入可打开已保存游戏快照的辅助设备上。
我可以使用基本字符串数据保存和检索Google Play游戏服务的快照,但是如何将数据库行存储到字节数组中(使用Google Play游戏服务存储快照数据需要字节数组)回来保存游戏快照?谢谢你。
答案 0 :(得分:1)
因为你要求一种方式将内存中的数据库记录表示为byte []。 如果我在你的位置,我会先做一个简单的建模,创建一个可以代表数据库记录内容的java类。
例如:
数据库记录: {id,firstName,lastName} 我只是创建一个java类作为这样的模型:
public class Contact {
private long id;
private String firstName;
private String lastName;
// add getters and setters
}
现在,当您进行数据库查询并且有一条或多条记录时,可以为每条记录创建此模型的新实例,并从您拥有的记录中设置模型实例的内容。
Contact contact = new Contact();
contact.setFirstName("The first name from the database record");
//And so on.
现在将模型实例转换为byte []
ByteArrayOutputStream arrOutStream = new ByteArrayOutputStream();
try {
ObjectOutputStream out = new ObjectOutputStream(arrOutStream);
out.writeObject(contact);
byte[] bytes = arrOutStream.toByteArray();
} catch (IOException e) {
e.printStackTrace();
}
从字节[]
读取该对象byte[] bytesToRead;
ByteArrayInputStream arrInStream = new ByteArrayInputStream(bytesToRead);
try {
ObjectInputStream objectInStream = new ObjectInputStream(arrInStream);
contact = (Contact) objectInStream.readObject();
} catch (Exception e) {
e.printStackTrace();
}
现在,您拥有该模型,您可以将其放回数据库中。
如果您需要对数据库中的多个记录进行单个字节[],您只需创建一个包含联系人列表的新模型:
class Contacts {
List<Contact> contactsList;
}
您可以只创建联系人模型的一个实例,并在其中添加尽可能多的联系人,然后仅为执行一次序列化,而不是将每个记录序列化为byte []。联系人实例。