VB.NET - oledbcommand查询显示语法错误

时间:2017-08-10 08:43:32

标签: vb.net oledbcommand

我在下面的插入查询中遇到语法错误  cmd.ExecuteNonQuery()

我检查了参数的数据类型和提供的值。他们是对的。

带后缀的变量' CB'代表Combobox。我最初用过 itemCB.selectedItem.toString。但现在改为itemCB.text。但无论如何两者都不起作用。

很长时间无法找出语法错误。 有人可以帮助我。

Dim cmdText As String
            cmdText = "insert into tblSales(salesDate,item,type,container,quantity,amount,custId,custName,custPhNo,custPlace,custEmail,remarks) values(?,?,?,?,?,?,?,?,?,?,?,?)"

            Dim cmd As New OleDbCommand
            cmd.CommandText = cmdText
            cmd.Connection = MainForm.con

            cmd.Parameters.AddWithValue("@salesDate", salesDate.Value.ToString("dd-MM-yyyy"))
            cmd.Parameters.AddWithValue("@item", itemCB.Text)
            cmd.Parameters.AddWithValue("@type", typeCB.Text)
            cmd.Parameters.AddWithValue("@container", containerCB.Text)
            cmd.Parameters.AddWithValue("@quantity", CInt(qty.Text))
            cmd.Parameters.AddWithValue("@amount", CInt(amount.Text))
            cmd.Parameters.AddWithValue("@custId", CInt(custId.Text))
            cmd.Parameters.AddWithValue("@custName", custName.Text)
            cmd.Parameters.AddWithValue("@custPhNo", custPhNo.Text)
            cmd.Parameters.AddWithValue("@custPlace", custPlace.Text)
            cmd.Parameters.AddWithValue("@custEmail", custEmail.Text)
            cmd.Parameters.AddWithValue("@remarks", remarks.Text)
            cmd.ExecuteNonQuery()

2 个答案:

答案 0 :(得分:0)

您使用的是哪个数据库?,Insert语句的语法对我来说很奇怪。我希望有以下几点:

  cmdText = "insert into tblSales(salesDate,item,type,container,quantity,amount,custId,custName,custPhNo,custPlace,custEmail,remarks) values(@salesDate,@item,@type,@container, @quantity,@amount,@custId,@custName,@custPhNo,@custPlace,@custEmail,@remarks)"

标记每个参数的位置。

答案 1 :(得分:0)

我使用MS Access作为我的后端数据库,其中' Container'是一个关键字。作为我的表列,被命名为容器,它引发了这个错误。

cmd.Parameters.AddWithValue(" @ container",containerCB.Text)==>错误就在这里。

现在我将列名更改为' containerType'

语法错误已解决