Asp.net 访问OLEDB报告”;语法错误“;但这一说法似乎是正确的
我正在ASP.net中编写一个简单的页面来更新Access表中的密码。以下是有效的SELECT查询的语法: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"))
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查询编辑器中起作用,但在“我的页面”的语法中不起作用。添加了括号,问题解决了。非常感谢@斯坦顿-有道理!