执行查询Order表的C#代码时触发SqlException:关键字'Order'附近语法错误
解决SQL语法错误:Incorrect syntax near the keyword 'Order'
这个问题其实挺常见的——你撞到了SQL保留关键字的冲突坑!Order是SQL里的核心保留关键字(用来做ORDER BY排序操作的),当你直接写SELECT * FROM Order时,SQL解析器会把它当成排序关键字来识别,而不是你的表名,自然就抛出语法错误了。
快速修复方案
只需要给表名加上方括号[],明确告诉SQL引擎这是一个对象名(表名),而不是关键字:
List<Order> results = new List<Order>(); db.Cmd = db.Conn.CreateCommand(); // 给Order表名加上方括号,明确标识为表对象 db.Cmd.CommandText = "SELECT * FROM [Order]"; db.Rdr = db.Cmd.ExecuteReader(); while (db.Rdr.Read()) { results.Add(getOrderFromReader(db.Rdr)); } db.Rdr.Close(); return results;
额外小建议
如果项目还处于可调整的阶段,尽量避免用SQL保留关键字作为表名、列名,这能从根源上避免这类无意义的语法冲突。但如果已经没法修改表名了,用方括号(SQL Server环境)或者反引号(MySQL环境)包裹就是标准的解决方式。
内容的提问来源于stack exchange,提问作者oisin smyth
相关产品推荐
相关产品推荐

