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

Windows C#向MS Access插入数据时Insert语句语法错误求助

MS Access 插入数据报错的问题解决

问题分析与修复点:

  • 字段名与保留字语法错误:SQL里Employee ID含空格、Password是Access保留字,必须用方括号[]包裹,否则数据库无法识别字段。
  • 字符串拼接的致命问题:直接拼接文本框内容,不仅会被SQL注入攻击,一旦输入含单引号(比如名字O'Neil)就会触发SQL语法错误,必须改用参数化查询。
  • 连接资源泄漏:原代码手动关闭连接,若报错时可能没执行到Close(),用using语句可自动释放连接资源,避免连接池耗尽。

修正后的代码:

private void btn_add_Click(object sender, EventArgs e)
{
    try
    {
        // 修正字段名,用方括号包裹特殊字段
        string sql = "INSERT INTO Employee([Employee ID], Firstname, Lastname, Email, Username, [Password]) " +
                     "VALUES(@EmpID, @FirstName, @LastName, @Email, @Username, @Password)";
        
        // using语句自动管理连接和命令的生命周期
        using (OleDbConnection conn = new OleDbConnection("你的Access连接字符串"))
        using (OleDbCommand cmd = new OleDbCommand(sql, conn))
        {
            // 添加参数,注意OleDb是按参数顺序匹配,不是名称
            cmd.Parameters.AddWithValue("@EmpID", txt_employee_id.Text);
            cmd.Parameters.AddWithValue("@FirstName", txt_employee_firstname.Text);
            cmd.Parameters.AddWithValue("@LastName", txt_employee_lastname.Text);
            cmd.Parameters.AddWithValue("@Email", txt_employee_email.Text);
            cmd.Parameters.AddWithValue("@Username", txt_employee_username.Text);
            cmd.Parameters.AddWithValue("@Password", txt_employee_password.Text);
            
            conn.Open();
            cmd.ExecuteNonQuery();
            MessageBox.Show("记录已保存", "操作成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show($"错误详情:{ex.Message}", "操作失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

额外注意:

  • 把代码里的"你的Access连接字符串"替换成你实际使用的连接字符串(比如Provider=Microsoft.ACE.OLEDB.12.0;Data Source=你的数据库路径.accdb;)。
  • OleDb参数不支持按名称匹配,必须保证添加参数的顺序和SQL语句中VALUES后的顺序完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 00:13:11