ORA-00933:更新表时SQL命令未正确结束

时间:2015-07-16 00:48:17

标签: vb.net oracle

Dim cmd As New OleDbCommand
cmd.Connection = conn
Dim dr As OleDb.OleDbDataReader

cmd = New OleDbCommand(
    "update sales set outlet_no=' " & tb1.Text & _
    " 'and eid=' " & tb2.Text & _
    " 'and cid=' " & TB3.Text & _
    " 'and pid=' " & TB4.Text & _
    " 'and sale_date=' " & TB5.Text & _
    " 'and quantity=' " & TB6.Text & _
    " 'where outlet_no=' " & tb1.Text & " ' ", conn)**

cmd.CommandType = CommandType.Text
dr = cmd.ExecuteReader()

我已经检查了100次,我发现UPDATE的语法正确。请帮忙。我需要很快修复一个项目

1 个答案:

答案 0 :(得分:4)

正确的UPDATE语句语法为:

UPDATE table_name
SET col1 = val1, col2 = val2, ..., colN = valN
WHERE somecolumn = somevalue

但你现在有:

UPDATE table_name
SET col1 = val1 AND col2 = val2 AND ... AND colN = valN
WHERE somecolumn = somevalue

问题是AND个关键字。它们应该是逗号(,)。

顺便说一句,我现在就说出来,你会听到其他人说的话。请考虑使用参数绑定,而不是直接在SQL中以您的方式连接您的值。一个原因是防止SQL注入漏洞。但是如果你的任何一个值中只有一个引号,它也会阻止破坏你的查询,而你却忘记将单引号加倍。

修改

现在T.S.已经如此善意地清理了问题的格式,对我来说,即使你修复了UPDATE语句的一般语法后,你也很明显可能会发现它并没有达到您所期望的效果,因为您的单引号内似乎有不受欢迎的额外空间。 (例如:outlet_no=' "& " ' ")。

使用参数绑定的另一个原因是:您不必担心单引号的位置。