我的SQL中的语法错误是什么?

时间:2015-05-06 23:41:34

标签: sql vb.net tsql sql-update vb.net-2010

我的命令是:

sql = "UPDATE tbl_employees SET Username_= """ & TextBox1.Text & """, Password_= """ & TextBox2.Text & """, Temporary=" & False & " WHERE Username_ = """ & EmployeeLogin.loginusername & """ AND Password_ = """ & EmployeeLogin.loginpassword & """"

语法错误是什么?谢谢你的帮助。

5 个答案:

答案 0 :(得分:0)

MS Access使用Jet数据库引擎(http://en.m.wikipedia.org/wiki/Microsoft_Jet_Database_Engine),其中Temporary是保留字。请在此处查看保留字列表:

https://support.microsoft.com/en-us/kb/321266

将表名放在方括号中,如下所示:

[Temporary]

答案 1 :(得分:0)

已经发布了一个解决方案,但这里有一些免费的建议。

当遇到这样的错误时,请使用调试工具捕获变量中的实际生成值

  • 使用查询执行工具,手动执行SQL"#34;。
  • 查看错误消息是否指向问题。
  • 如果没有,请从查询中删除一小部分SQL,例如AND Password_ = "blahBLAHblah"并再次执行。
  • 重复最后一步,直到错误消失。
  • 删除的最后一段代码必定会导致问题。
  • 重新删除原始查询,只删除一部分以确认问题是否存在。

这并不总是这么简单,但有条不紊的循序渐进方法通常可以找到错误的来源。

答案 2 :(得分:0)

已经发布了一个解决方案,但我会留在这里仅供参考。使用参数,它更整洁,更容易阅读。这可以用作代码的替代方案。假设您使用VB.NETTSQL

Dim SqlCmd As String = " UPDATE tbl_emlployees SET Username_ = @username, Password_ = @password, Temporary = @temporary, WHERE Username_ = @myUsername AND Password_ = @myPassword"
        Using execSQLQuery As SqlCommand = New SqlCommand(strSqlCmd, myConn.dbConn)
            execSQLQuery.Parameters.AddWithValue("@username", TextBox1.Text)
            execSQLQuery.Parameters.AddWithValue("@password", TextBox2.Text)
            execSQLQuery.Parameters.AddWithValue("@temporary", "False")
            execSQLQuery.Parameters.AddWithValue("@myUsername", MyUsernameVariable)
            execSQLQuery.Parameters.AddWithValue("@myPassword", MyPasswordVariable)

            execSQLQuery.ExecuteNonQuery()
        End Using

execSQLQuery只是一个临时变量,Using之后它将被处理掉。

答案 3 :(得分:-1)

尝试编写AND代替符号&在sql中

答案 4 :(得分:-1)

我认为问题在于:

Temporary=" & False & "

尝试将此更改为

Temporary=0

vb.net布尔类型False将被转换为字符串表示" False"在那个我认为SQL会皱眉的声明中。假设您的列是一个列,您最好使用0或1。