'No value given for one or more required parameters.' 数据类型规范是否有误?

'No value given for one or more required parameters.' Is there an error in specification of data types?

我正在尝试从 vb.net 文本框中添加数据以访问我无法修复错误。是因为单选按钮、组合框、日期时间选择器的数据类型吗?


 Dim count = Convert.ToInt32(cmd.ExecuteScalar())


        If count > 0 Then
            MessageBox.Show("Details already exist")
            con.Close()

        Else
            Dim create As New OleDbCommand("INSERT INTO Household ([lastname] , [firstname] , [middlename] , [extname] , [sex]  ,  [birthdate] , [citizenship] , [birthplace] , [civilstatus] , [occupation] ,
            [housenumber] , [street] , [purok] ) VALUES (@lastname, @firstname , @middlename , @extname , @sex , @birthdate , @citizenship, @birthplace , @civilstatus , @occupation , @housenumber , @street , @purok)", con)


            create.Parameters.AddWithValue("@lastname", OleDb.OleDbType.VarChar).Value = TextBox5.Text.Trim
            create.Parameters.AddWithValue("@firstname", OleDb.OleDbType.VarChar).Value = TextBox6.Text.Trim
            create.Parameters.AddWithValue("@middlename", OleDb.OleDbType.VarChar).Value = TextBox7.Text.Trim
            create.Parameters.AddWithValue("@extname", OleDb.OleDbType.VarChar).Value = TextBox8.Text.Trim
            create.Parameters.AddWithValue("@sex", OleDb.OleDbType.Char).Value = RadioButton1.Checked Or RadioButton2.Checked
            create.Parameters.AddWithValue("@birthdate", OleDb.OleDbType.Date).Value = DateTimePicker1.Value
            create.Parameters.AddWithValue("@citizenship", OleDb.OleDbType.VarChar).Value = TextBox10.Text.Trim
            create.Parameters.AddWithValue("@birthplace", OleDb.OleDbType.VarChar).Value = TextBox9.Text.Trim
            create.Parameters.AddWithValue("@civilstatus", OleDb.OleDbType.Char).Value = ComboBox1.SelectedValue
            create.Parameters.AddWithValue("@occupation", OleDb.OleDbType.VarChar).Value = TextBox11.Text.Trim
            create.Parameters.AddWithValue("@housenumber", OleDb.OleDbType.Numeric).Value = TextBox12.Text.Trim
            create.Parameters.AddWithValue("@street", OleDb.OleDbType.VarChar).Value = TextBox13.Text.Trim
            create.Parameters.AddWithValue("@purok", OleDb.OleDbType.Char).Value = ComboBox2.SelectedValue

[Heres the error][1]


  [1]: https://i.stack.imgur.com/bCXb7.png

我只看到 OledbParameterCollection.AddWithValue 的一个签名,它是 Public Function AddWithValue (parameterName As String, value As Object) As OleDbParameter https://docs.microsoft.com/en-us/dotnet/api/system.data.oledb.oledbparametercollection.addwithvalue?view=dotnet-plat-ext-5.0

全部create.Parameters.AddWithValue应该是create.Parameters.Add

要解决性别问题,您需要提供 Char。字符串后面的小写 c 告诉编译器这是一个 Char,而不是 String.

    Dim sex As Char
    If RadioButton1.Checked Then
        sex = "M"c 'Male
    Else
        sex = "F"c 'Female
    End If
    create.Parameters.Add("@sex", OleDb.OleDbType.Char).Value = sex