向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)
另外还有两个新手需要注意的小细节:
日期字段的类型匹配:如果你的
dt字段是Access里的日期/时间类型,直接传文本框的字符串可能会因为格式问题报错,建议把文本转成日期类型再传入:cmd.Parameters.AddWithValue("@dt", CDate(txt_DT.Text))当然最好再给文本框加个日期格式验证,避免用户输入无效日期导致报错。
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
相关产品推荐
相关产品推荐

