我想知道升级到Android SQLite的新数据库版本后是否可以恢复旧的数据库数据?
谢谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
如果任何旧数据已更改,则不会发生(除非您可以轻松确定已更改的内容并且可以撤消更改)。
可以使用PRAGMA user_version = ?
更改版本号,在哪里?是一个整数,表示要更改为的版本号。这实际上只更改该值(数据库标头中的偏移60)。 user_version pragma。如果更改实际存储的版本号,则必须考虑超级调用使用的编码版本号,如果它们不同,则会调用onUpgrade
或onDownGrade
。这就是存储在DB头中的值与超级调用在代码中提供的值进行比较。
您也可以更改传递给Database Helper的版本号(SQLiteOpenHelper的子类)但这会导致异常,除非onDownGrade
方法被覆盖。
但是,这种方法不是抽象的,所以它不是强制性的 客户实施它。如果没有重写,则默认实现 将拒绝降级并抛出SQLiteException。 onDowngrade
存储在数据库中的版本号对数据本身没有影响。这真的是一个方便的价值,恰恰相反,SQLiteOpenHelper使用了这个值。
数据库本身只是一个备份它的文件,你只需复制文件以恢复它,你基本上将它复制回来。但是,实施备份和恢复只有在实施后才能使用。