访问OLEDB报告“语法错误”,但该语句看起来正确

时间:2014-01-05 22:18:02

标签: asp.net ms-access syntax sql-update

我正在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文件集的权限,以便每个人都有完全控制权,所以我不认为这是一个权限问题。

有人能看出我的错吗?我真的被卡住了。感谢。

1 个答案:

答案 0 :(得分:2)

PASSWORD是Access SQL中的reserved word,因此如果它是列名,则需要将其括在方括号中。

strSQL = "UPDATE users SET [Password] = '1'"