比较C++中的两个SQLite数据库



我有两个C++函数,每个函数构造一个SQLite数据库。

第一个函数构造数据库版本 1,然后通过添加自第一个版本以来已添加到数据库的所有表/列将其升级到最新版本。另一个函数构造一个已经在最新版本中的数据库。因此,每个函数都提供一个数据库,该数据库具有所有必需的表和列,但没有值。

我想写一个单元测试来比较这两个函数的结果。我想测试它们是否具有完全相同的表和列,并且所有列都具有相同的 CHECK 和 NOT NULL 约束。我只需要比较列和表,因为此时数据库中没有值。

我更愿意以人类可读的形式获取差异(将它们放在错误消息中),但布尔值(不同/不不同)也可以。

鉴于两个数据库位于不同的变量中并且我无法组合它们,我该怎么做?

还有其他问题建议为此使用外部应用程序,但是我可以在C++中以简单的方式做到这一点吗?一种可能性是为每个数据库执行一些 SQL 命令,并在 for 循环中比较结果,但我需要哪些命令?

您可以读取sqlite_master表以读取用于创建每个表的 SQL 并进行比较:

SELECT name, type, sql FROM sqlite_master;

有关sqlite_master的更多信息,请参阅 SQLite 文档。

最新更新