我对ASP并不是很精通,但这就是我的客户网站所写的内容,所以我采取了简单的方法。
基本上,我试图根据我给出的值显示存储过程的结果。应该从SP返回多个记录,因此我不确定是否需要循环访问它们,或者是什么。
到目前为止,我有
set rst2 = server.createobject("ADODB.Recordset")
rst2.open "exec zSProc_Name of SP " & resID,conL
while not rst2.eof
Response.Write(rst2.Fields("fieldname1").value & ", ")
Response.Write(rst2.Fields("fieldname2").value & "<br />")
Response.Write(rst2.Fields("fieldname3").value & "<br />")
Response.Write(rst2.Fields("fieldname4").value & "<br />")
rst2.movenext
wend
set rst2 = nothing 'Clear up memory used
rst2.close
任何人都可以清楚我在这里做错了吗?
答案 0 :(得分:4)
您在调用Nothing
之前将rst2
分配给Close
,这样会导致“..对象未设置”错误。交换线条来修复它。
您可能会从客户端发送到页面的数据中获取resID
。如果是这样,那么使用字符串连接来创建SQL批处理会使站点暴露于SQL注入攻击。
相反,您应该使用ADODB.Command对象来执行SP而不是构造SQL。有关示例,请咨询KB164485。
您正在直接编写字段值,大部分时间都可以,但如果任何文本包含<
或&
等字符,则无法正确呈现。用Server.HTMLEncode
方法换行值。