关键字WHERE附近的语法不正确

时间:2013-12-06 16:11:59

标签: sql-server vb.net

我正在尝试在我的SQL语句中添加WHERE子句,但出现错误:

  

关键字'WHERE'附近的语法不正确。

运行程序时。

我的SQL语句

insertCommand.CommandText = "INSERT INTO [UserInformation]  (Password, NewUser) " _
            & "Values('" & Pw1 & "', '" & NewUSR & "') WHERE ([Email] = '" & txtUserName2 & "') "

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

INSERT statement中WHERE子句的含义是什么? 您应该在结束使用值括号

之后删除所有内容

当然,你也不应该在sql语句中使用字符串连接,因为你的代码暴露给Sql Injection

 insertCommand.CommandText = "INSERT INTO [UserInformation]  " & _
                             "(Password, NewUser) Values(@pwd,@newusr)" 
 insertCommand.Parameters.AddWithValue("@pwd", Pw1)
 insertCommand.Parameters.AddWithValue("@new", NewUSR )

相反,如果您的计划是更新记录,那么WHERE是必需的,但查询文本是不同的

 updateCommand.CommandText = "UPDATE [UserInformation]  " & _
                             "SET Password = @pwd, NewUser = @newusr " & _
                             "WHERE ([Email] = @email) "

如果您使用参数来传递值,则可以删除SQL注入的可能性,但另一个很大的好处是,现在您的查询文本不会出现打开/关闭引号。您可以正确解析命令(包括参数的确切解析)到底层数据库代码。

答案 1 :(得分:0)

你需要这样一个INSERT和SELECT组合。

http://technet.microsoft.com/en-us/library/ms188263(v=sql.105).aspx