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

向Access数据库插入记录时出现“Syntax error in INSERT INTO statement”错误求助

向Access数据库插入记录时出现“Syntax error in INSERT INTO statement”错误求助

Hi 👋,看了你的代码,问题出在INSERT语句的语法错误上,这是新手写SQL语句时很容易踩的坑!

你当前的INSERT语句里,字段列表和值列表的括号使用完全错了:

  • 所有字段应该放在同一个括号里,用逗号分隔,而不是每个字段单独加括号再用逗号连接
  • 值列表同理,所有参数要统一放在一个括号内,用逗号分隔

错误的写法:

insert into Table1([FullName]),([agency]),([shelf]),([dt]) values (@FullName),(@agency),(@shelf),(@dt)

修正后的正确SQL语句:

insert into Table1([FullName], [agency], [shelf], [dt]) values (@FullName, @agency, @shelf, @dt)

另外还有两个新手需要注意的小细节:

  1. 日期字段的类型匹配:如果你的dt字段是Access里的日期/时间类型,直接传文本框的字符串可能会因为格式问题报错,建议把文本转成日期类型再传入:

    cmd.Parameters.AddWithValue("@dt", CDate(txt_DT.Text))
    

    当然最好再给文本框加个日期格式验证,避免用户输入无效日期导致报错。

  2. OleDb参数的匹配规则:OleDb是按参数添加的顺序匹配字段,而不是按参数名,所以你现在的参数顺序和字段顺序一致是没问题的,这点要记住,不要乱调整参数添加的先后顺序。

最后给你贴出完整修正后的代码:

Try
    conn.Open()
    ' 修正后的INSERT语句
    Dim cmd As New OleDb.OleDbCommand("insert into Table1([FullName], [agency], [shelf], [dt]) values (@FullName, @agency, @shelf, @dt)", conn)
    cmd.Parameters.Clear()
    cmd.Parameters.AddWithValue("@FullName", txt_name.Text)
    cmd.Parameters.AddWithValue("@agency", txt_agen.Text)
    cmd.Parameters.AddWithValue("@shelf", txt_she.Text)
    ' 如果dt是日期类型,建议转成Date类型传入
    cmd.Parameters.AddWithValue("@dt", CDate(txt_DT.Text))
   
    Dim i As Integer = cmd.ExecuteNonQuery
    
    If i > 0 Then
        MsgBox("Records Save!")
    Else
        MsgBox("Failed!")
    End If
Catch ex As Exception
    MsgBox(ex.Message)
End Try
conn.Close()
loading()
clear()

试一下这个修正后的代码,应该就能解决语法错误的问题啦!

备注:内容来源于stack exchange,提问作者Koweenss

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 10:35:29