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

C#连接MS Access三张表时提示‘查询表达式缺少操作符’

问题解决:Access多表连接“查询表达式缺少操作符”错误

错误原因

Access的Jet SQL语法和标准SQL存在差异,多表连续使用INNER JOIN时,必须用括号嵌套前两个表的连接结果,再与第三个表进行连接。另外Key是Access的保留字,直接作为字段名使用会触发语法错误,需要用方括号[]包裹。

修正后的SQL语句(Access直接运行)

SELECT Products.ProductName, Keys.[Key], Keys.Active, Transactions.Total, Transactions.TransactionDate
FROM (Keys
INNER JOIN Transactions 
ON Keys.TransactionID = Transactions.TransactionID)
INNER JOIN Products 
ON Transactions.ProductID = Products.ProductID
WHERE Transactions.UserID = 20

C#中修正后的代码(推荐参数化查询)

直接拼接SQL字符串存在SQL注入风险,建议改用参数化查询:

command.CommandText = @"
SELECT Products.ProductName, Keys.[Key], Keys.Active, Transactions.Total, Transactions.Date 
FROM (Keys 
INNER JOIN Transactions ON Keys.TransactionID = Transactions.TransactionID) 
INNER JOIN Products ON Transactions.ProductID = Products.ProductID 
WHERE Transactions.UserID = @UserID";
command.Parameters.AddWithValue("@UserID", UserID);
OleDbDataReader reader = command.ExecuteReader();

关键注意事项

  • 多表JOIN时,必须用括号包裹前两个表的连接结果,再与第三个表关联
  • 当字段名/表名是Access保留字时,必须用[]包裹,比如Keys.[Key]
  • 优先使用参数化查询替代字符串拼接,避免SQL注入漏洞

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:01:54