如何在Qt中使用变量指定SQL SELECT语句的查询列
问题解决办法
你的代码核心问题有两个:
- 把要作为列名的变量错误放到了
FROM后面(变成指定表名) - 给列名加了单引号,SQL里单引号是用来包裹字符串常量的,不是列名这类标识符的正确格式
正确写法
假设你要查询的表名为user_table(替换成你实际的表名),用Qt的QString::arg()来拼接列名:
QString test = "company"; QSqlQuery query = db->exec(QString("SELECT %1 FROM user_table").arg(test));
如果你的列名包含特殊字符(比如空格、数据库关键字),可以根据数据库类型给列名加标识符包裹:
- MySQL用反引号:
SELECT%1FROM user_table - SQL Server用方括号:
SELECT [%1] FROM user_table - PostgreSQL/Oracle用双引号:
SELECT "%1" FROM user_table
关键提醒
如果test的值来自用户输入,一定要先做合法性校验(比如只允许字母、下划线开头的合法列名字符),避免SQL注入风险。
内容的提问来源于stack exchange,提问作者user20324932
相关产品推荐
相关产品推荐

