INSERT INTO 语句中的语法错误

Syntax error in INSERT INTO statement

我想向 Access 插入新值 table 我正在使用此代码

Public cmd As New OleDbCommand
Public CMDB As New OleDbCommandBuilder
Dim da As OleDb.OleDbDataAdapter
Dim con As New OleDb.OleDbConnection

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

    con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|learn_english.mdb"
    con.Open()
    cmd = New OleDbCommand("insert into quiz (question, option1, option2, option3, option4, answer, level) values(@question, @op1, @op2, @op3, @op4, @answer ,@level)", con)
    cmd.Parameters.AddWithValue("@question", TextBox1.Text)
    cmd.Parameters.AddWithValue("@op1", TextBox2.Text)
    cmd.Parameters.AddWithValue("@op2", TextBox3.Text)
    cmd.Parameters.AddWithValue("@op3", TextBox4.Text)
    cmd.Parameters.AddWithValue("@op4", TextBox5.Text)
    cmd.Parameters.AddWithValue("@answer", TextBox6.Text)
    cmd.Parameters.AddWithValue("@level",DropDownList1.SelectedValue)

    cmd.ExecuteNonQuery()
    con.Close()
End Sub

但我收到错误 "Syntax error in INSERT INTO statement"

OleDbCommand 不支持命名参数。您必须将 @PARAM 替换为 ?。 (请参阅 MSDN 中的 OleDbCommand.Parameters。)

The OLE DB .NET Provider does not support named parameters for passing parameters to an SQL statement or a stored procedure called by an OleDbCommand when CommandType is set to Text. In this case, the question mark (?) placeholder must be used.

cmd = New OleDbCommand("insert into quiz (question, option1, option2, option3, option4, answer, [level]) values(?, ?, ?, ?, ?, ? ,?)", con)
cmd.Parameters.Add(TextBox1.Text)
cmd.Parameters.Add(TextBox2.Text)
cmd.Parameters.Add(TextBox3.Text)
cmd.Parameters.Add(TextBox4.Text)
cmd.Parameters.Add(TextBox5.Text)
cmd.Parameters.Add(TextBox6.Text)
cmd.Parameters.Add(DropDownList1.SelectedValue)

我认为这段代码应该可以解决问题![​​=15=]