更新数据库架构的最佳实践是什么?我可以发送一个包含SQL命令的文本文件。应用程序可以检查文本文件并执行所需的命令。然后,我猜我会有一个标志来表示更新已完成。我还没有找到一种从应用程序中删除资产文件夹中文件的方法,这将是在更新数据库之后做的最好的事情。
对此有何想法?
您可能想要覆盖 (override)
onUpdate(SQLiteDatabase db,int old Version,int newVerison)
以下教程可以帮助您完成该过程:http://www.codeproject.com/KB/android/AndroidSQLite.aspx
正如其他人所提到的,SQLiteOpenHelper是你要开始使用的东西。
根据你的环境和要求,Liquibase可能值得一看。它允许以更结构化的方式编写更新语句,并且比纯SQL操作更容易使用。不过我还没有在Android上使用过它。
public void onUpgrade(SQLiteDatabase db, int oldVersion, int
newVersion) {
if (oldVersion < newVersion)
{
db.execSQL("ALTER TABLE " + "TABLE_NAME" + " TO " +
"NEW_TABLE_NAME");
db.execSQL("ALTER TABLE " + "TABLE_NAME" + " ADD COLUMN " +
"FIELD_NAME" + " INTEGER;");
}
}
SQLite 不支持删除或修改列。
onUpdate()
中处理所有情况。所以,如果您有模式修订版本1、2和3,并且您需要从1转到3,则一种解决方案是先应用1到2的更改,然后应用2到3的更改。 - CommonsWareonUpdate()
方法中,我们应该考虑所有情况,即1->2、1->3、2->3,因为我们不应该假设所有用户都有最新版本。 - Kushal