将版本设置为SQLite数据库文件

时间:2012-04-05 20:39:54

标签: c++ sqlite qxorm

我有一个C ++应用程序,它通过QxOrm将数据存储在数据库(SQLite)中。

很明显,在下一个版本中,将添加/删除/重命名列,因此我想为每个创建的数据库设置版本号,这样当有人尝试加载数据库时,它会将其版本与当前版本的应用程序并自动添加/删除/重命名列以匹配当前架构。

我在QxOrm文档中找不到类似的内容:

qx::QxSqlDatabase::getSingleton()->setVersion(2);

首先,有可能用SQLite做这种事吗?如果不是,我应该只创建一个保存数据库版本的表吗?

2 个答案:

答案 0 :(得分:2)

数据库版本可能还不够:您应该为每个持久化类存储一个版本(以及每个持久化类的其他信息,例如列列表)。 在QxOrm上下文中注册持久化类时,必须输入版本号:

QX_REGISTER_HPP_XXX(myClass, myBaseClass, myClassVersion)

您可以在QxOrm库的常见问题解答中找到有关创建SQL架构的一些信息: http://www.qxorm.com/qxorm_en/faq.html#faq_230

使用QxOrm库的内省引擎,这很容易,关于内省引擎的更多细节如下: http://www.qxorm.com/qxorm_en/faq.html#faq_190

您应该在数据库中创建一个表来存储每个persistents类的状态:您可以存储每个类的版本号,列列表等等。然后,比较2个版本的持久性将非常容易用于修改SQL模式的类。

答案 1 :(得分:0)

现在,您拥有QxEntityEditor应用程序来管理数据库架构演变。 QxEntityEditor是QxOrm库的多平台和跨数据库图形编辑器。 有关QxEntityEditor功能的视频演示,请访问:http://www.qxorm.com/qxorm_en/tutorial_4.html