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

best way to implement a sql statement binding in C++

本文关键字:绑定 最佳 方式 语句 sql C++ 实现      更新时间:2023-10-16

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

我有预先准备好的语句,可以在运行时绑定。

我想将一个函数调用中的语句绑定并执行到包装器。

不过,我最初是使用变体模板。但在我看到的文档中,我还没有发现如何将作为模板类型输入的类型限制为固定集(int、string、double),以及如何对这些类型执行基本逻辑。

类似(伪代码)

foreach arg in args
    if arg1==std::string
        bindToString(arg);
    else if int...

感谢

利用函数重载。

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);

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

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...);
}