我的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