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

使用Microsoft.ACE.OLEDB.12.0执行INSERT语句报语法错误如何解决

问题原因

1. 直接触发报错的语法错误

你的INSERT SQL语句中使用了错误的关键字VALUE,Access数据库支持的SQL语法要求插入值必须使用复数形式**VALUES**,这是抛出语法错误的核心原因。

2. 隐藏的潜在问题

你当前使用字符串直接拼接SQL的写法有两个隐患:

  • 若用户输入的内容包含单引号,会再次触发SQL语法错误
  • 存在SQL注入风险,恶意用户可通过构造特殊输入篡改、删除数据库内容

修复方案

临时修复(仅解决当前语法报错)

直接将VALUE修改为VALUES即可:

insertCom.CommandText = "INSERT INTO userinfo([ID],[PW])" & "VALUES('" & TextBox1.Text & "','" & TextBox2.Text & "')"

推荐修复(彻底解决所有问题)

改用参数化查询的写法,既避免特殊字符导致的语法错误,也能杜绝SQL注入风险:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    db_connection()
    insertCom.Connection = dbConn
    ' 使用占位符代替字符串拼接
    insertCom.CommandText = "INSERT INTO userinfo([ID],[PW]) VALUES(?, ?)"
    ' 按顺序给占位符赋值
    insertCom.Parameters.AddWithValue("@ID", TextBox1.Text)
    insertCom.Parameters.AddWithValue("@PW", TextBox2.Text)
    insertCom.ExecuteNonQuery()
    ' 清理参数,避免后续复用命令时冲突
    insertCom.Parameters.Clear()
    db_update()
    Me.UserinfoBindingSource.Position = Me.BindingContext(UserinfoBindingSource).Count
    dbConn.Close()
End Sub

内容的提问来源于stack exchange,提问作者배수아

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:45:03