1

我有这个 sql 语句从 vb 更新访问 db 中的列,但是当我运行程序时,它显示语句中存在语法错误。编码:

cmd.Connection = cnn
cmd.CommandText = 
    "UPDATE users SET password='" & 
    Me.pd.Text.Trim & "' WHERE password='" & Me.pd.Tag.ToString & "'"
cmd.ExecuteNonQuery()`

该错误表明更新语句中存在语法错误。我试图找到错误但徒劳无功。

4

2 回答 2

3

首先,您应该通过不同的字段(例如用户 ID、姓名、电子邮件)而不是当前密码来进行更新。

尝试使用命名参数而不是字符串连接,以避免由于包含值'和 SQL 注入而导致的错误。

您还可以使用[name]转义表或字段的名称(假设您使用的是 SQL Server)。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue.aspx#Y684

cmd.CommandText = "UPDATE [users] SET [password]=@current_password WHERE [password]=@new_password"
cmd.Parameters.AddWithValue("@current_password", Me.pd.Text.Trim)
cmd.Parameters.AddWithValue("@new_password", Me.pd.Tag.ToString)
cmd.ExecuteNonQuery()
于 2012-04-21T07:53:25.767 回答
1

您的问题提出了许多其他重要问题,反映在您收到的评论中。我不想忽略任何这些问题。但是,我确实想提请您注意这password是一个保留字这一事实。请参阅Access 中的问题名称和保留字

如果您按照 mazzucci 的建议将表名和字段名括起来,您的语法错误可能会消失。但是,您实际上不需要将表名括起来,因为users它不是保留字。

于 2012-04-21T16:35:52.193 回答