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

我的SQL中的语法错误是什么?,sql,vb.net,tsql,sql-update,vb.net-2010,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_ = """ &

我的命令是:

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

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

试着写,而不是用sql中的symbol&

Temporary=" & False & "
尝试将此更改为

Temporary=0

vb.net布尔类型False将被转换为该语句中的字符串表示法“False”,我相信SQL将对此表示不满。假设您的列是位列,最好使用0或1。

MS Access使用Jet数据库引擎(),其中“临时”是保留字。请参见此处的保留字列表:

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

[Temporary]

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

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

  • 使用查询执行工具,“手动”执行SQL
  • 查看错误消息是否指向问题
  • 如果没有,请从查询中删除一小部分SQL,例如
    和Password=“blahBLAHblah”
    ,然后再次执行
  • 重复最后一步,直到错误消失
  • 删除的最后一位代码一定是导致问题的原因
  • 在仅删除一个部分的情况下重试原始查询,以确认问题是否存在

它并不总是像这样简单,但是一个有系统的一步一步的方法通常可以找到错误的来源。

已经发布了一个解决方案,但我将把它留在这里仅供参考。使用参数,它简洁易读。这可以作为代码的替代方案。假设您使用和


execSQLQuery
只是一个临时变量,在使用
之后,它将被释放。

您确实需要考虑参数化查询。你的应用程序是开放的SQL注入都德,这是一个学校的项目,在本周五之后将再也不会被触及,你知道它为什么会抛出语法错误吗?在执行上述语句之后,SQL变量包含什么?有这么多的引语,真是一团糟,我真的不想解码它。错误消息是什么?当运行sql时,包含“更新tbl_员工设置Username=“z”、Password=“z”、Temporary=False,其中Username=“a”和Password=“a”在sql中没有
,即用于连接字符串以创建sql。
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