因此,我希望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;
}
答案 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提供单元测试失败的通知。