【问题标题】:Comparing two SQLite databases in C++在 C++ 中比较两个 SQLite 数据库
【发布时间】:2016-03-01 09:07:47
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: c++ sql sqlite


    【解决方案1】:

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

    SELECT name, type, sql FROM sqlite_master;
    

    有关sqlite_master的更多信息,请咨询SQLite documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-06
      • 1970-01-01
      • 2011-11-28
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 2017-10-29
      相关资源
      最近更新 更多