You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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 %1 FROM user_table
  • SQL Server用方括号:SELECT [%1] FROM user_table
  • PostgreSQL/Oracle用双引号:SELECT "%1" FROM user_table

关键提醒

如果test的值来自用户输入,一定要先做合法性校验(比如只允许字母、下划线开头的合法列名字符),避免SQL注入风险。

内容的提问来源于stack exchange,提问作者user20324932

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:55:29