0

我正在尝试在 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 查询中抛出错误,作为语法错误。

4

1 回答 1

2

因此,如果您的代码在 txtNewPassword 字段中有一个单引号,那么您的查询最终会是这样的

Query = "UPDATE Users SET Password ='mypass'word' WHERE LoginID='123'"

这当然是一个语法错误。

您可以尝试用一对单引号替换单引号

Query = "UPDATE Users SET [Password] ='" & Replace(txtNewPassword, "'", "''") & "' WHERE .... 

但请记住,此代码对 SQL 注入是开放的。如果在 VB6 中这样做并不容易,您也应该使用参数化查询。此外,正如 HansUp 在其评论中指出的那样,您需要Password用方括号将保留字括起来

为什么我应该使用参数而不是将值放入我的 SQL 字符串

于 2013-02-23T10:36:57.350 回答