为了好玩,我正在尝试用C ++包装sqlite API。我想要一个有点像jdbc的接口,所以我有一个Statement
类,它有一些方法可以在预准备语句中绑定?
小丑字符。
我想我会在union
:
union Param
{
int i;
double d;
std::string s;
};
这些将以参数的索引作为键进入地图:
std::map<int, Param> parammap;
那么,我可以使用类似jdbc的方法:
void Statement::SetInt(int idx, int i)
{
Param p;
p.i = i;
parammap.insert(std::make_pair(idx, p));
}
这一切都很有趣,直到我发现我还希望能够在数据库中设置NULL值。
stmt.SetInt(1, 15);
stmt.SetString(2, "John Carmack");
stmt.SetNull(3); //uh oh
有没有一种聪明的方法可以在union
中实现这一点?我怎么代表那个?