参数到C ++中的省略号

时间:2011-07-12 21:07:26

标签: c++ sql sqlite

是否可以在省略号(...)中传递不同类型的参数?我正在编写一个函数来进行SQL查询,我想通过Ellipse向Insert语句添加值,我的值是不同类型的。

2 个答案:

答案 0 :(得分:2)

作为警告,请不要太聪明。并非我因类似的努力而遭受了巨大的痛苦。 :))

Sqlite内置了查询构建器,请先检查它们。他们不会让你做的是指定一个表名,这可能是你的问题所在。

boost::format是一个不错的选择。这是类型安全的,并且不太可能像C的可变参数一样对你进行分段。

std::string statement = boost::str( 
    boost::format("SELECT tab.* FROM %1% as tab")
        % "my_table_name"
  );

编辑:

Sqlite自己处理参数绑定,你不需要任何可变参数。

sqlite3_bind_* functions提供访问权限。

您可以使用以下内容:

const char *sql = "INSERT INTO tab (a,b) VALUES (?1,?2);";
// create statement
sqlite3_bind_int(stmt, 1, 43);
sqlite3_bind_int(stmt, 2, 40000);

这些绑定函数有返回值,你必须检查,我会留给你。

答案 1 :(得分:1)

这是可能的。您需要一些机制来确定参数的数量和类型(例如printf的格式字符串)。