gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 03:38:40 28 4
gpt4 key购买 nike

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

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

我在 QxOrm 文档中找不到类似的东西:

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

那么首先可以用 SQLite 做那种事情吗?如果不是,我应该只创建一个表来保存数据库版本吗?

最佳答案

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

QX_REGISTER_HPP_XXX(myClass, myBaseClass, myClassVersion)

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

使用 QxOrm 库的内省(introspection)引擎,这很容易做到,关于内省(introspection)引擎的更多细节在这里: http://www.qxorm.com/qxorm_en/faq.html#faq_190

你应该在你的数据库中创建一个表来存储每个持久类的状态:你可以为每个类存储一个版本号,一个列的列表,等等......然后比较两个版本的持久性会很容易类来修改您的 SQL 模式。

关于c++ - 将版本设置为 SQLite 数据库文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10035686/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com