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

.NET 4.8 VB.NET插入Access表报错:语法错误/自增字段值遗漏

VB.NET 插入Access数据库报错的解决方案

问题1:INSERT INTO语句语法错误

原因

PASSWORD是Access数据库的保留关键字,直接作为字段名使用会导致SQL语法解析失败。

解决办法

在SQL语句中将PASSWORD字段名用方括号[]包裹,修改后的INSERT语句如下:

cmd.CommandText = "INSERT INTO USERS(EMAIL,[PASSWORD],DESIGNATION) VALUES(@Email,@Password,@Designation)"

问题2:自增字段USERID省略时提示“缺少值”

原因

USERS表中USERID字段的自增属性未正确配置,或者字段被设置为必填但未启用自动编号机制。

解决办法

  1. 打开Access数据库,找到USERS表的设计视图
  2. 选中USERID字段,将其数据类型设置为“自动编号”
  3. 确认该字段的“必填”属性为“否”,“索引”属性设为“有(无重复)”(保证自增ID的唯一性)

额外代码修正细节

  1. 连接字符串格式错误:原代码中DataSource应为Data Source(带空格),修正后:
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\ISIOLO.accdb"
  1. 资源泄漏优化:建议用Using语句自动释放数据库连接和命令对象,避免手动关闭可能出现的资源泄漏:
Private Sub BtnCreate_Click(sender As Object, e As EventArgs) Handles BtnCreate.Click
    Using conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\ISIOLO.accdb")
        conn.Open()
        Using cmd As OleDbCommand = conn.CreateCommand()
            cmd.CommandType = CommandType.Text
            cmd.CommandText = "INSERT INTO USERS(EMAIL,[PASSWORD],DESIGNATION) VALUES(@Email,@Password,@Designation)"

            cmd.Parameters.AddWithValue("@Email", TxtEmail.Text)
            cmd.Parameters.AddWithValue("@Password", TxtPassword.Text)
            cmd.Parameters.AddWithValue("@Designation", ComboDesignation.Text)

            Try
                cmd.ExecuteNonQuery()
                MessageBox.Show("操作成功")
                PnlCreateAccount.Visible = False
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Using
    End Using
End Sub

内容的提问来源于stack exchange,提问作者EDRICK

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:32:50