我们在工作场所需要经常解决的一个问题是如何根据用户提供的表/列名称构建 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/