如何正确更新用户计算机中的表?

时间:2017-04-05 20:14:46

标签: c++ qt sqlite

我对更新数据库中的字段有疑问。

我开发了一个 Qt C ++ )应用程序,该应用程序使用 SQLite 来存储数据。 SQLite 文件(.db)存储在用户计算机中。当用户第一次打开应用程序时,将自动创建该文件。

问题是我需要更新该数据库中的一个表。我可以使用ALTER TABLE命令来完成它,但是如何正确更新用户计算机中分配的数据库中的表?

我是否需要创建一个函数来检查表中是否没有我想要的字段然后运行ALTER TABLE命令还是有其他一些简单/正确的方法来实现这个目的?

1 个答案:

答案 0 :(得分:3)

更通用的解决方案可能是在数据库中使用版本号条目并根据此集中更改。如果您没有,可以使用此更新创建它。至少我认为它在代码中变得更加清晰,并且您对未来的修改有一点意义:

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而不会影响表格,因此如果您愿意,这可能是一个更快捷的选择。