如何使用 Google Play 游戏服务将数据库行转换为字节数组并返回保存的游戏快照
How to convert database rows into a byte array and back for a Saved Game snapshot using Google Play Games Services
目标是将数据库行转换为 Google Play 游戏服务的保存游戏快照,然后检索这些行并将它们插入将打开保存游戏快照的辅助设备。
我可以使用基本字符串数据保存和检索快照 to/from Google Play Games Service,但是我如何将数据库行存储到字节数组中(存储快照需要字节数组使用 Google Play 游戏服务的数据)并返回保存的游戏快照?谢谢。
由于您要求的是一种将内存中的数据库记录表示为字节[] 的方法。
如果我处于你的位置,我会首先做一个简单的建模,通过创建一个 java class 来表示数据库记录的内容。
例如:
一条数据库记录:{id, firstName, lastName} 我会简单地创建一个 java class 作为这样的模型:
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.
现在将模型实例转换为字节[]
ByteArrayOutputStream arrOutStream = new ByteArrayOutputStream();
try {
ObjectOutputStream out = new ObjectOutputStream(arrOutStream);
out.writeObject(contact);
byte[] bytes = arrOutStream.toByteArray();
} catch (IOException e) {
e.printStackTrace();
}
并从 byte[]
中读回该对象
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;
}
无需将每条记录序列化为一个字节[],您可以只创建一个 Contacts 模型的实例,并在其中添加尽可能多的联系人,然后只进行一次序列化对于 联系人 实例。
目标是将数据库行转换为 Google Play 游戏服务的保存游戏快照,然后检索这些行并将它们插入将打开保存游戏快照的辅助设备。
我可以使用基本字符串数据保存和检索快照 to/from Google Play Games Service,但是我如何将数据库行存储到字节数组中(存储快照需要字节数组使用 Google Play 游戏服务的数据)并返回保存的游戏快照?谢谢。
由于您要求的是一种将内存中的数据库记录表示为字节[] 的方法。 如果我处于你的位置,我会首先做一个简单的建模,通过创建一个 java class 来表示数据库记录的内容。
例如:
一条数据库记录:{id, firstName, lastName} 我会简单地创建一个 java class 作为这样的模型:
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.
现在将模型实例转换为字节[]
ByteArrayOutputStream arrOutStream = new ByteArrayOutputStream();
try {
ObjectOutputStream out = new ObjectOutputStream(arrOutStream);
out.writeObject(contact);
byte[] bytes = arrOutStream.toByteArray();
} catch (IOException e) {
e.printStackTrace();
}
并从 byte[]
中读回该对象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;
}
无需将每条记录序列化为一个字节[],您可以只创建一个 Contacts 模型的实例,并在其中添加尽可能多的联系人,然后只进行一次序列化对于 联系人 实例。