2012-04-05 99 views
0

我有一个C++应用程序在数据库中(SQLite的)存储数据。设置一个版本通过QxOrm SQLite数据库文件

很显然,在未来的版本中,均会被添加列/删除/重命名,所以我想设置一个版本号来创建的每个数据库,这样当有人试图加载数据库但它的版本进行比较与当前版本的应用程序并自动添加/删除/重命名列以匹配当前模式。

我不能在QxOrm文档中找到的东西,看起来像:

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

因此,首先是有可能做那种事的SQLite?如果不是,我应该创建一个可以保存数据库版本的表?

回答

2

数据库版本也许是不够的:你应该存储每个持久类的一个版本(每持久化类,也许其它信息,例如像列的列表)。 当您注册一个持久化类为QxOrm情况下,你必须把版本号:

QX_REGISTER_HPP_XXX(myClass, myBaseClass, myClassVersion) 

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

使用QxOrm库内省的发动机,这是很容易做到的,约反省引擎在这里更多的细节: http://www.qxorm.com/qxorm_en/faq.html#faq_190

你应该创建一个表到您的数据库来存储状态坚持每经济需求类:你可以存储每类中的版本号,列清单等..然后,它会很容易比较两个版本的持久化类的来修改你的SQL模式。现在

+0

谢谢!很高兴看到你在SO上开设了一个账户!如果您希望我在QxOrm标签中添加更多信息,请告诉我! – talnicolas 2012-04-06 12:20:57

0

,你必须QxEntityEditor应用程序来管理你的数据库架构演变。 QxEntityEditor是QxOrm图书馆多平台,跨数据库的图形编辑器。 的QxEntityEditor功能的视频演示,请访问:http://www.qxorm.com/qxorm_en/tutorial_4.html