Asp.net 访问OLEDB报告”;语法错误“;但这一说法似乎是正确的

Asp.net 访问OLEDB报告”;语法错误“;但这一说法似乎是正确的,asp.net,ms-access,syntax,sql-update,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"))

我正在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错误表示我的语法有错误。但是当我response.write strSQL行时,它给出了以下信息:

UPDATE users SET Password = '1' 
当我将其粘贴到Access中的查询编辑器中时,查询会将表中的所有“Password”字段更新为“1”,因此我知道语法是正确的。我在没有datareader的情况下使用dbCommand.ExecuteOnQuery()进行了尝试,结果相同

我已经设置了访问文件的权限,这样每个人都可以完全控制,所以我认为这不是权限问题


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

密码是Access SQL中的密码,因此如果它是列名,则需要将其括在方括号中

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

您的源代码看起来不太正确。。。带引号的字符串中的分号,没有终止语句的分号(放错了?)。对于SQL,分号仅用于脚本、存储过程中的语句终止,通常用于SQL命令行实用程序中,而不用于构建update语句时使用过的上下文。@rObjects,很高兴知道。这不是问题所在,但我会更新我的编码标准。该死,就这么简单“密码”在Access查询编辑器中起作用,但在“我的页面”的语法中不起作用。添加了括号,问题解决了。非常感谢@斯坦顿-有道理!