用C ++比较两个SQLite数据库

时间:2016-03-01 09:07:48

标签: c++ sql sqlite

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

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

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

我更希望以人类可读的形式获得差异(将它们放在错误信息中),但布尔值(不同/不同)也没问题。

我怎么能这样做,因为两个数据库都有不同的变量,我不能将它们组合起来?

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

1 个答案:

答案 0 :(得分:2)

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

SELECT name, type, sql FROM sqlite_master;

有关sqlite_master的详细信息,请参阅SQLite documentation