使用sql保留字作为列

时间:2016-01-15 11:53:15

标签: sql-server asp-classic ado recordset reserved-words

我正在执行以下代码:

Set cmdTemp = Server.CreateObject("ADODB.Command")
cmdTemp.CommandType = adCmdText
...
cmdTemp.CommandText = "SELECT email, [Identity], UserName, UserId " & _
                      "  FROM Users WHERE UserId = '" & UserId & "'"

rst.Open cmdTemp, ,adOpenForwardOnly ,adLockOptimistic
rst("Identity") = "101" //ERROR!
rst.Update
rst.Close

它给出了这个错误:

  

ADODB.Recordset错误'800a0cc1'

     

在与请求对应的集合中找不到项目   名称或序数。

     

/iweb/admin/Users.asp,第2118行

我理解是因为在SQL服务器中保留了Identity这个词,但是无法让它工作。

还尝试替换引发错误的行:

rst("[Identity]") = "101"

结果是:

  

ADODB.Recordset错误'800a0cc1'

     

在与请求对应的集合中找不到项目   名称或序数。

     

/iweb/admin/Users.asp,第2118行

1 个答案:

答案 0 :(得分:2)

尝试使用adOpenKeyset CursorTypeEnum

打开记录集

查看示例here