如何正确更新用户计算机中的表格?
问题描述:
我有一个与更新数据库中的字段有关的概念问题。如何正确更新用户计算机中的表格?
我已经开发了使用的SQLite存储数据的Qt的(C++)应用程序。文件(.db)的SQLite存储在用户计算机中。该文件在用户第一次打开应用程序时自动创建。
问题是我需要更新该数据库中的一个表。我可以使用ALTER TABLE
命令执行此操作,但是如何正确更新用户计算机中分配的数据库中的表?
我是否需要创建一个函数来检查表是否没有我想要的字段,然后运行ALTER TABLE
命令或者有其他一些简单/正确的方法来解决这个问题?
答
更通用的解决方案可能是在数据库中使用版本号条目并基于此集中更改。如果您没有它,可以使用此更新创建它。至少我认为它成为在代码清晰,你对未来的修改单点:
void update_database_to_current_version() {
const int version = current_db_version(); // returns 1 if version is not found
if (version < 2) { // since version 2 table XYZ has new structure, match here
// 'ALTER TABLE' ...
}
// if (version < N) // DB changes starting in version N
// ...
update_db_version_to_newest();
}
在另一方面,据我现在,你可以在不影响表运行ALTER TABLE
几次,所以如果你愿意,这可能是一个更快的选择。
如何分发应用程序?如果使用更新程序更新应用程序,则可以让更新程序检查列的存在并根据需要更新数据库。 – NathanOliver
谢谢@NathanOliver。不幸的是,我没有更新程序,应用程序(.exe)通过电子邮件发送的链接分发。不过,我可以直接在应用程序中检查列的存在。 – KelvinS