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

执行INSERT INTO语句时出现OleDb异常0x80040e14如何解决

异常原因

OleDb异常0x80040e14属于SQL语法错误,你的代码里有两个核心问题触发报错:

  • 带空格的列名未做转义处理:Choice A、Choice B、Correct Answer这些列名包含空格,OleDb无法直接识别这类标识符,必须用方括号包裹才能正常解析。
  • 直接拼接SQL字符串:如果输入的题目、选项内容里包含单引号,会直接打断SQL的语法结构,同时这种写法还存在SQL注入的安全隐患。

解决方法

采用参数化查询改写代码,同时给带空格的列名加上方括号转义,修正后的代码如下:

private void AddQuiz_Button_Submit_Click(object sender, EventArgs e)
{
    // using会自动释放连接资源,无需手动关闭
    using(OleDbConnection myConnection = GetConnection())
    {
        // 带空格的列名用[]包裹,参数用?占位
        string myQuery = @"INSERT INTO QuestionBank 
        (Question, [Choice A], [Choice B], [Choice C], [Choice D], Category, [Correct Answer]) 
        VALUES (?, ?, ?, ?, ?, ?, ?)"; 

        OleDbCommand myCommand = new OleDbCommand(myQuery, myConnection);
        // 按占位符顺序添加参数,OleDb按位置匹配参数,顺序不能错
        myCommand.Parameters.AddWithValue("p1", AddQuiz_RichTextBox_Question.Text);
        myCommand.Parameters.AddWithValue("p2", OptionA_TextBox.Text);
        myCommand.Parameters.AddWithValue("p3", OptionB_TextBox.Text);
        myCommand.Parameters.AddWithValue("p4", OptionC_TextBox.Text);
        myCommand.Parameters.AddWithValue("p5", OptionD_TextBox.Text);
        myCommand.Parameters.AddWithValue("p6", AddQuiz_Category_Listbox.Text);
        myCommand.Parameters.AddWithValue("p7", AddQuiz_ListBox_Answer.Text);

        try
        {
            myConnection.Open(); 
            AddQuiz_Label_CheckConnection.Text = "Connection Successful";
            myCommand.ExecuteNonQuery(); 
            MessageBox.Show("Question saved");
        }
        catch (Exception ex)
        {
            MessageBox.Show("Exception in DBHandler" + ex); 
        }
    }
}

额外说明

  • OleDb的参数是位置匹配,不需要严格对应参数名,只要添加参数的顺序和SQL里?的顺序一致即可。
  • 如果你后续修改SQL的字段顺序,必须同步调整参数添加的顺序,否则会出现数据插错列的问题。
  • 参数化查询既解决了输入含单引号导致的语法报错,也完全避免了SQL注入风险,比字符串拼接的写法更安全稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:36:01