Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Google Play Games Services将数据库行转换为字节数组并返回以保存游戏快照_Java_Android_Arrays_Google Play Games - Fatal编程技术网

Java 如何使用Google Play Games Services将数据库行转换为字节数组并返回以保存游戏快照

Java 如何使用Google Play Games Services将数据库行转换为字节数组并返回以保存游戏快照,java,android,arrays,google-play-games,Java,Android,Arrays,Google Play Games,目标是将数据库行转换为Google Play Games服务的已保存游戏快照,然后检索这些行并将其插入将打开已保存游戏快照的辅助设备 我可以使用基本的字符串数据在Google Play Games服务中保存和检索快照,但如何将数据库行存储到字节数组(使用Google Play Games服务存储快照数据需要字节数组)中,然后返回以获取已保存的游戏快照?谢谢。因为您需要一种将内存中的数据库记录表示为字节[]的方法。 如果我处在您的位置,我会首先做一个简单的建模,通过创建一个java类来表示数据库记

目标是将数据库行转换为Google Play Games服务的已保存游戏快照,然后检索这些行并将其插入将打开已保存游戏快照的辅助设备


我可以使用基本的字符串数据在Google Play Games服务中保存和检索快照,但如何将数据库行存储到字节数组(使用Google Play Games服务存储快照数据需要字节数组)中,然后返回以获取已保存的游戏快照?谢谢。

因为您需要一种将内存中的数据库记录表示为字节[]的方法。 如果我处在您的位置,我会首先做一个简单的建模,通过创建一个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.
现在将模型实例转换为字节[]

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;
}
class联系人{
列出联系人名单;
}

您可以创建一个联系人模型的实例,并在其中添加尽可能多的联系人,而不是将每个记录序列化为一个字节[],然后只对联系人实例执行一次序列化。

如果我错了,请纠正我。您的问题是如何在内存中将数据库记录表示为字节[],并从字节[]检索数据库记录?正确,我正在寻找最好的方法。如果有任何最佳实践或标准方法可以通过最少的转换实现这一点。谢谢。如果我正确理解上述内容,我需要将联系人对象的每个实例存储到它自己的字节数组中。为了将快照保存到Google Games Services,我只能使用一个单字节数组。我如何将多个数据库行存储到一个单字节数组中并返回,谢谢。您可能想看看JSON序列化与对象序列化。类似的优点是序列化的字节更小,并且反序列化与用于读取它的java类没有紧密联系。这样,如果你为你的游戏制作了一个新的模型,你不需要保留旧类的可序列化兼容版本来读取玩家的旧数据。@ClaytonWilkinson这样的东西,也应该是平台无关的吗?:是的,所有平台都有JSON库。例如,如果通过REST将数据发送到后端服务器,则可以从PHP、Java等读取数据。