Razor Pages执行UPDATE SQL提示'Make'附近语法错误排查
问题根因
触发Incorrect syntax near 'Make'错误的核心原因是UPDATE语句字符串拼接时缺失必要的空格分隔符,和参数传值、表结构、表单取值逻辑均无关。
你当前代码中拼接SQL的逻辑会生成如下非法SQL语句:
UPDATE listCarsSET Make=@Make, CarModel=@CarModel, Year=@Year, Colour=@Colour, Registration=@Registration, Price=@PriceWHERE Id=@Id
由于C#字符串是直接按字面拼接,listCars后没有空格直接衔接SET,拼成了数据库无法识别的标识符listCarsSET;@Price后没有空格直接衔接WHERE,拼成了PriceWHERE。SQL Server解析语句时无法识别SET关键字,就会在首个字段Make位置抛出语法错误,这也是你断点看到@Make参数值完全正常,但依然报错的原因。
修复方案
在SQL字符串拼接的对应位置补上缺失的空格即可,修正后的SQL拼接代码如下:
string sql = "UPDATE listCars " + "SET Make=@Make, CarModel=@CarModel, Year=@Year, Colour=@Colour, Registration=@Registration, Price=@Price " + "WHERE Id=@Id";
修正后拼接生成的合法SQL语句为:
UPDATE listCars SET Make=@Make, CarModel=@CarModel, Year=@Year, Colour=@Colour, Registration=@Registration, Price=@Price WHERE Id=@Id
执行即可正常完成更新操作。
排查建议
后续遇到同类SQL语法错误时,可优先在执行前断点查看拼接完成的完整SQL字符串文本,这类漏空格、关键字拼写错误的问题可以直接定位,不需要逐行核对参数取值、表字段映射,能大幅缩短排查时间。
内容的提问来源于stack exchange,提问作者SeanMcP
相关产品推荐
相关产品推荐

