我正在尝试在VB中的应用程序中实现更改密码模块。更新查询存在一些问题
Private Sub cmdOK_Click()
Query = "Select * From Users Where LoginID='" & txtLoginID & "' and Password = '" & txtCuPassword & "'"
Set reSet = myCon.Execute(Query)
If (Not reSet.BOF) And (Not reSet.EOF) Then
Query1 = "UPDATE Users SET Password ='" & txtNewPassword & "' WHERE LoginID='" & txtLoginID & "'"
Set reSet = myCon.Execute(Query1)
执行时,UPDATE查询会引发错误,因为语法错误。
答案 0 :(得分:2)
因此,如果您的代码在txtNewPassword字段中有单引号,那么您的查询最终会出现类似
的内容Query = "UPDATE Users SET Password ='mypass'word' WHERE LoginID='123'"
这当然是语法错误。
您可以尝试用一对单引号替换单引号
Query = "UPDATE Users SET [Password] ='" & Replace(txtNewPassword, "'", "''") & "' WHERE ....
但请记住,此代码对SQL注入是开放的。如果在VB6中执行此操作并不容易,则应使用参数化查询。另外,正如HansUp在其评论中指出的那样,您需要将带有方括号的保留字Password
括起来
Why should I use Parameters instead of putting values into my SQL string