比较C++中的两个SQLite数据库
Comparing two SQLite databases in C++
我有两个C++函数,每个函数构造一个SQLite数据库。
第一个函数构造数据库版本 1,然后通过添加自第一个版本以来已添加到数据库的所有表/列将其升级到最新版本。另一个函数构造一个已经在最新版本中的数据库。因此,每个函数都提供一个数据库,该数据库具有所有必需的表和列,但没有值。
我想写一个单元测试来比较这两个函数的结果。我想测试它们是否具有完全相同的表和列,并且所有列都具有相同的 CHECK 和 NOT NULL 约束。我只需要比较列和表,因为此时数据库中没有值。
我更愿意以人类可读的形式获取差异(将它们放在错误消息中),但布尔值(不同/不不同)也可以。
鉴于两个数据库位于不同的变量中并且我无法组合它们,我该怎么做?
还有其他问题建议为此使用外部应用程序,但是我可以在C++中以简单的方式做到这一点吗?一种可能性是为每个数据库执行一些 SQL 命令,并在 for 循环中比较结果,但我需要哪些命令?
您可以读取sqlite_master
表以读取用于创建每个表的 SQL 并进行比较:
SELECT name, type, sql FROM sqlite_master;
有关sqlite_master
的更多信息,请参阅 SQLite 文档。
相关文章:
- 如何在C++中从两个单独的for循环中添加两个数组
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 如何返回一个类的两个对象相加的结果
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 两个字符串在 c++ 中不相等
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 两个文件使用彼此的功能-如何解决
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 停止cmake target_link_libraries将插件中静态库的两个对象文件链接到静态库本身
- 将fold表达式与std::一起用于两个元组
- 如何在C++中比较两个char数组
- 给定两个偶数,求出它们之间所有偶数的平方和
- 比较两个大小不等的映射c++
- SQLite C++ 比较同一数据库中的两个表以匹配记录
- 两个项目静态地链接同一个SQLite库会导致问题
- 比较C++中的两个SQLite数据库
- SQLite合并两个表