vb中sql update语句中的语法错误

时间:2012-04-21 07:43:41

标签: sql vb.net ms-access

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

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

错误显示update语句中存在语法错误。我试图找到错误但是徒劳无功。

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:1)

您的问题引发了您收到的评论中反映的许多其他重要问题。我不想解雇任何这些问题。但是我想提请你注意password是一个保留字的事实。请参阅Problem names and reserved words in Access

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