如何在编译时检测c ++代码中的SQL错误

时间:2017-11-15 06:48:12

标签: c++ sql jenkins

因此,我希望SQL错误阻止C ++代码成功构建。

我在想的是通过一些cmake脚本编译,或者用什么来编写SQL的cpp文件并验证SQL。

我知道我可以添加某种运行时错误检查,但我不希望以下代码成功构建(不是关于pqxx的问题,而是一般的C ++中的SQL错误):

#include <iostream>
#include <pqxx/pqxx>

using namespace std;
using namespace pqxx;

int main() {
    connection conn("dbname=d user=u");

    conn.prepare("invalid_sql", "SELECT 1 FROM WHERE a = $1");

    nontransaction txn(conn);

    txn.prepared("invalid_sql")(1.0).exec();

    cout << "the process already died due to invalid SQL" << endl;

    return 0;
}

2 个答案:

答案 0 :(得分:0)

你可以,排序......

一种方法是Boost meta_parsing,另一种方法是使用C++11's user-defined literal types。我无法找到适合SQL的实例,但也许随着C ++ 11的成熟,有人会想出一个。

答案 1 :(得分:-1)

结束这个问题。另一个答案很好,但那不是我做的。

我决定将准备好的语句放在init_sql()方法中,并使用boost / test / unit_test.hpp使用jenkins对复制数据库进行调用,jenkins提供单元测试失败的通知。