Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
Android 将对象存储到SQLite数据库最佳实践_Android_Sqlite_Serialization - Fatal编程技术网

Android 将对象存储到SQLite数据库最佳实践

Android 将对象存储到SQLite数据库最佳实践,android,sqlite,serialization,Android,Sqlite,Serialization,我想将一个对象存储到SQLlite数据库中。我正在寻找如何最好地做到这一点,以确保如果我将来需要更新/更改此对象,新的和旧的对象布局的用户将受到最小的影响。换句话说,我希望确保对对象进行更改对不使用旧数据库格式更新其软件的客户端的影响最小。我还想确保从旧记录样式到新格式的轻松更新 我想我可以在SQL行中添加一个元素来标识具有唯一名称的对象类型,并标识对象版本号。这样我就可以读取行并使用对象号来控制反序列化程序使用正确版本的类 我非常感谢您在这方面的最佳实践。首先要介绍的信息是 基本上,您需要创建

我想将一个对象存储到SQLlite数据库中。我正在寻找如何最好地做到这一点,以确保如果我将来需要更新/更改此对象,新的和旧的对象布局的用户将受到最小的影响。换句话说,我希望确保对对象进行更改对不使用旧数据库格式更新其软件的客户端的影响最小。我还想确保从旧记录样式到新格式的轻松更新

我想我可以在SQL行中添加一个元素来标识具有唯一名称的对象类型,并标识对象版本号。这样我就可以读取行并使用对象号来控制反序列化程序使用正确版本的类

我非常感谢您在这方面的最佳实践。

首先要介绍的信息是

基本上,您需要创建
SQLiteOpenHelper
的子类。通过这种方式,您将获得有用的回调来创建/更新DB模式,甚至更改数据


操作系统会自动调用
SQLiteOpenHelper.onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion)
回调,并接受版本参数,以便您能够检测是否存在升级或降级,从而进行所需的数据库更改。通过这种方式,您可以安排某种类型的数据库迁移(以某种方式进行)。

如果是android应用程序,当您更新软件时,您有机会更新数据库。通常你不会有新软件+旧数据库或新数据库+旧软件场景的问题。有趣的是,我不知道有这样的事情。你亲自用过吗?如果是的话,你的经历是什么?