我有这个sql语句来从vb更新访问数据库中的列,但是当我运行程序时,它显示语句中存在语法错误。代码:
cmd.Connection = cnn
cmd.CommandText =
"UPDATE users SET password='" &
Me.pd.Text.Trim & "' WHERE password='" & Me.pd.Tag.ToString & "'"
cmd.ExecuteNonQuery()`
错误显示update语句中存在语法错误。我试图找到错误但是徒劳无功。
答案 0 :(得分:3)
首先,您应该通过其他字段(例如用户ID,姓名,电子邮件)进行更新,而不是使用当前密码进行更新。
尝试使用命名参数而不是字符串连接,以避免由于包含'
和SQL注入的值而导致的错误。
您还可以使用[name]
来转义表或字段的名称(假设您使用的是SQL Server)。
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()
答案 1 :(得分:1)
您的问题引发了您收到的评论中反映的许多其他重要问题。我不想解雇任何这些问题。但是我想提请你注意password
是一个保留字的事实。请参阅Problem names and reserved words in Access。
如果您遵循mazzucci的建议来括起表和字段名称,您的语法错误可能会消失。但是,您实际上不需要括起表名,因为users
不是保留字。