C#操作SQL Server插入tblOrders表时报Transaction附近语法错误
错误原因
Transaction是SQL Server的保留关键字,直接作为列名写在SQL语句中时,会被数据库解析引擎误识别为语法指令,而非你自定义的列名,最终触发语法报错。你之前仅核对C#代码逻辑,编译器不会校验嵌入的SQL语句语法,所以完全排查不到这类异常。
修复方案
- 给SQL语句中的
Transaction列名加方括号转义,避开保留字冲突 - 若后续可调整表结构,尽量不要用SQL保留字作为列名,减少每次写语句都要转义的额外成本
修改后的SQL命令代码如下:
cmd = new SqlCommand("INSERT INTO tblOrders (TransactionCode, Name, [Transaction], Variety, Weight, Price, Quantity, TotalPayment) VALUES(@TransactionCode, @Name, @Transaction, @Variety, @Weight, @Price, @Quantity, @TotalPayment)", con);
额外注意
如果修改后仍弹出同类语法错误,可逐一排查其余列名是否属于保留字,类似Name、Weight这类高频歧义字段,建议一并加上方括号转义,彻底规避冲突。
内容的提问来源于stack exchange,提问作者alexa torrento
相关产品推荐
相关产品推荐

