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

ASP.NET插入数据报错:CheckBox无对应托管提供程序原生类型映射

解决ASP.NET插入数据时的"No mapping exists from object type System.Web.UI.WebControls.CheckBox"错误

错误原因

这个错误是因为向SQL参数传递了CheckBox控件对象本身,而非控件的Checked属性值(布尔类型),或者数据库字段类型与传递的值不匹配。

解决步骤

  • 确认参数传递的是Checked属性:
    检查代码中是否误传了cb_new(控件对象),确保传递的是cb_new.Checked(布尔值)。你的代码写法是对的,但可以再核对拼写和语法。

  • 匹配数据库字段类型:
    确保数据库表tbl_employee_information的[new]字段是布尔型(比如SQL Server的bit类型)。如果字段是数值或字符串类型,需要转换布尔值:

    -- 若字段是int类型,用1/0代替布尔值
    cmd.Parameters.AddWithValue("@new", If(cb_new.Checked, 1, 0))
    
  • 推荐显式指定参数类型(避免隐式转换问题):
    比起AddWithValue,显式指定参数类型更安全,能避免类型匹配错误:

    cmd.Parameters.Add("@new", SqlDbType.Bit).Value = cb_new.Checked
    

修正后的完整代码

Using con As New SqlConnection(constr)
    con.Open()
    Using cmd As New SqlCommand("INSERT INTO tbl_employee_information([emp_firstname],[emp_mname],[emp_lastname],[new]) VALUES(@emp_firstname,@emp_mname,@emp_lastname,@new)", con)
        cmd.Parameters.AddWithValue("@emp_firstname", tb_fname.Text)
        cmd.Parameters.AddWithValue("@emp_mname", tb_mname.Text)
        cmd.Parameters.AddWithValue("@emp_lastname", tb_lname.Text)
        -- 显式指定参数类型并赋值Checked属性
        cmd.Parameters.Add("@new", SqlDbType.Bit).Value = cb_new.Checked
        cmd.ExecuteNonQuery()
    End Using
    -- Using块会自动释放连接,无需手动Close
End Using

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:57:16