我的命令是:
sql = "UPDATE tbl_employees SET Username_= """ & TextBox1.Text & """, Password_= """ & TextBox2.Text & """, Temporary=" & False & " WHERE Username_ = """ & EmployeeLogin.loginusername & """ AND Password_ = """ & EmployeeLogin.loginpassword & """"
语法错误是什么?谢谢你的帮助。
答案 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)
已经发布了一个解决方案,但这里有一些免费的建议。
当遇到这样的错误时,请使用调试工具捕获变量中的实际生成值。
AND Password_ = "blahBLAHblah"
并再次执行。 这并不总是这么简单,但有条不紊的循序渐进方法通常可以找到错误的来源。
答案 2 :(得分:0)
已经发布了一个解决方案,但我会留在这里仅供参考。使用参数,它更整洁,更容易阅读。这可以用作代码的替代方案。假设您使用VB.NET和TSQL。
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。