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

VB.NET中SQL Insert语句语法错误排查:同语句不同窗体表现异常

排查VB.NET中SQL Insert语句的语法错误问题

嘿,我一眼就揪出问题所在了!你仔细对比下报错和“正常运行”的SQL语句——报错的语句里,字段列表最后多了个多余的逗号!

看你提供的报错语句:

shop.MakeQuery("INSERT INTO Shop (Shop_ID,Shop_Name,Address,Postcode,) " & "VALUES (@ID,@Name,@Address,@Postcode)")

注意Postcode后面的那个逗号:Postcode,,这个末尾多余的逗号是SQL语法绝对不允许的。数据库解析器看到这个逗号,会默认后面还跟着一个列名,结果却直接遇到了右括号,自然就抛出语法错误了。

你说另一个窗体的相同语句能正常运行,大概率是你描述时的笔误——那个正常运行的语句实际上是没有这个多余逗号的,正确的写法应该是这样:

shop.MakeQuery("INSERT INTO Shop (Shop_ID,Shop_Name,Address,Postcode) " & "VALUES (@ID,@Name,@Address,@Postcode)")

修正方案

只需要把字段列表里最后那个多余的逗号删掉就行,修正后的完整代码如下:

shop.MakeQuery("INSERT INTO Shop (Shop_ID,Shop_Name,Address,Postcode) " & "VALUES (@ID,@Name,@Address,@Postcode)")

小建议

虽然有些数据库新版本开始支持列列表末尾加逗号,但大部分主流数据库(比如SQL Server、MySQL等)的传统语法是不认可这种写法的。为了避免这类低级错误,写SQL时可以养成一个小习惯:把每个列名单独换行写,这样多余的逗号一眼就能发现,比如:

INSERT INTO Shop 
(
    Shop_ID,
    Shop_Name,
    Address,
    Postcode
) 
VALUES 
(
    @ID,
    @Name,
    @Address,
    @Postcode
)

另外,你已经在用参数化查询了,这点特别棒,能有效避免SQL注入问题,继续保持!

内容的提问来源于stack exchange,提问作者the real swifty

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:22:21