我正在ASP.net中编写一个简单的页面来更新Access表中的密码。这是有效的SELECT查询的语法:
Dim dbConn As OleDbConnection
Dim dbCommand As OleDbCommand
Dim dbReader As OleDbDataReader
'Connect to db
dbConn = New OleDbConnection(Application("strConnectionString"))
dbConn.Open()
'Get user info
strSQL = "SELECT * FROM users WHERE Username = '" & strUsername & "';"
dbCommand = New OleDbCommand(strSQL, dbConn)
dbReader = dbCommand.ExecuteReader()
我的连接字符串:
Application("strConnectionString") = _
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strDBPath & _
"; Jet OLEDB:Database Password=" & strDBPassword & ";"
SELECT工作正常,所以我知道我的连接没问题。但是这个查询给了我一个语法错误:
strSQL = "UPDATE users SET Password = '1'"
在其他所有内容相同的情况下,ASP错误表示我的语法出错。但是当我响应。编写strSQL行时,它给了我这个:
UPDATE users SET Password = '1'
当我将其粘贴到Access中的查询编辑器中时,查询将表中的所有“密码”字段更新为“1”,因此我知道语法正常。我尝试了没有datareader并使用dbCommand.ExecuteNonQuery(),结果相同。
我已获得Access文件集的权限,以便每个人都有完全控制权,所以我不认为这是一个权限问题。
有人能看出我的错吗?我真的被卡住了。感谢。
答案 0 :(得分:2)
PASSWORD
是Access SQL中的reserved word,因此如果它是列名,则需要将其括在方括号中。
strSQL = "UPDATE users SET [Password] = '1'"