【发布时间】:2016-11-25 14:29:12
【问题描述】:
我一直在尝试移动所有查询以使用准备好的语句。我已经能够让 INSERT 和 UPDATE 命令正常工作,但由于某种原因 SELECT 语句不起作用。使用标准查询,我可以使用以下内容获取一行。
strSQL = "SELECT username FROM users WHERE id = " & request.querystring("id")
Set rs = objConnection.Execute(strSQL, ,adCmdText)
当我将其转换为准备好的语句时,它似乎返回了一个结果,但那里什么都没有。
set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = objConnection
cmd.CommandText = "SELECT username FROM users WHERE id = ?"
cmd.CommandType = adCmdText
cmd.Prepared = true
cmd.Parameters.Append(cmd.CreateParameter("@id", adVarChar, adParamInput, 255, request.querystring("id")))
rs = cmd.Execute()
查询没有返回数据,但由于某种原因,下面的 If 语句好像有一些数据一样通过。此行运行时,第一个查询将输出用户名。当准备好的语句运行时,它什么也不输出,但 if 语句就好像是真的一样通过。它似乎没有抛出任何错误。
if not (rs.eof and rs.bof) Then Response.Write(rs("username"))
【问题讨论】:
-
代码中有
On Error Resume Next吗? -
Set rs = cmd.Execute()? -
好消息@TimWilliams,错过了。
标签: asp-classic ado adodb