c++ - 使用列名 vector 生成 sql 语句

标签 c++ sql idioms

我们在工作场所需要经常解决的一个问题是如何根据用户提供的表/列名称构建 sql 语句。我要解决的问题是列名之间的逗号。

一种技术看起来像这样。

selectSql  = "SELECT ";

for (z = 0; z < columns.size(); z++)
{
    selectSql += columns[z]._name;
    selectSql += ", "; 
}

selectSql = selectSql(0, selectSql.len() - 2);

selectSql += "FROM some-table";

另一种技术看起来像这样

selectSql  = "SELECT ";

for (z = 0; z < columns.size(); z++)
{
    selectSql += columns[z]._name;
    if (z < columns.size() - 1) 
        selectSql += ", "; 
}

selectSql += "FROM some-table";

我对这两种实现都不是特别着迷。

我很想听听有关解决此问题的其他方法的想法,着眼于使代码更易于阅读/理解/维护。

有哪些替代技术可用?

最佳答案

在您的情况下,假设至少有一列可能是安全的,否则进行选择是没有意义的。在那种情况下你可以这样做:

selectSql  = "SELECT ";
selectSql += columns[0]._name;

for (z = 1; z < columns.size(); z++) {
   selectSql += ", ";
   selectSql += columns[z]._name;
}

selectSql += " FROM some-table";

关于c++ - 使用列名 vector 生成 sql 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/327010/

相关文章:

c++ - 如何从命令行捕获 exe 崩溃

c++ - 如何将指向 SDL_Surface 的 "global"指针传递给 C++ 中类的渲染函数?

sql - MONTH AND YEAR 的 Rails Sql 查询

c++ - 我应该如何将一个值插入另一个的 "middle"?

r - Rcpp 中对数 CDF 值下溢的处理

c++ - 如何选择文件保存到的位置?

sql - SQLite从表中的两列联接到另一个表上

php - mysql 查询 - 不要在多个 (5) 列中显示重复项?

c++ - 从派生类引用基类的更好习惯用法?

c++ - C++ 中严格类型定义的习语