在C++中实现sql语句绑定的最佳方法

111*_*111 6 c++ sql prepared-statement c++11

好的,所以我在c ++ 0x中编写了一个DB包装器,API在C中.

我有prerepared语句,我可以在运行时绑定.

我想绑定并执行1函数调用中的语句到包装器.

我最初的是使用变体模板.但是根据我看到的文档,我还没有找到如何将作为模板类型输入的类型限制为固定集(int,string,double),以及如何能够对这些类型执行基本逻辑.

像(伪代码)

foreach arg in args
    if arg1==std::string
        bindToString(arg);
    else if int...
Run Code Online (Sandbox Code Playgroud)

谢谢

log*_*og0 5

利用函数重载.

void bind(std::string& arg) { bindstring(arg); }
void bind(int& arg) { bindint(arg); }
...

std::vector<boost::variant<double,std::string,int>> args =  {...}
for (auto arg : args)
    bind(arg);
Run Code Online (Sandbox Code Playgroud)

- 编辑 -
使用可变参数模板的另一种方法

void bind(std::string& arg) { bindstring(arg); }
void bind(int& arg) { bindint(arg); }
void bind(void) {}

template <typename T, typename... Args>
void bind(T& arg, Args& args)
{
  bind(arg);  bind(args...);
}
Run Code Online (Sandbox Code Playgroud)

  • @ 111111:组合使用`boost :: variant`和`std :: vector` (2认同)