在VB和Access中更新查询问题

时间:2013-02-23 10:18:09

标签: visual-studio-2010 vb6 ms-access-2007

我正在尝试在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查询会引发错误,因为语法错误。

1 个答案:

答案 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