ASP Classic - Отображение результатов хранимой процедуры MSSQL2000? - PullRequest
1 голос
/ 03 ноября 2011

Я не очень хорошо разбираюсь в 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

, может кто-нибудь очиститьчто я тут делаю не так?

1 Ответ

4 голосов
/ 03 ноября 2011

Вы присваиваете Nothing для rst2 перед вызовом Close, так что это приведет к ошибке "..объект не установлен". Поменяйте местами линии, чтобы исправить это.

Потенциально вы получаете resID от данных, отправленных на страницу клиентом. В этом случае использование конкатенации строк для создания пакета SQL подвергает сайт атаке внедрения SQL.

Вместо этого вы должны использовать объект ADODB.Command для выполнения SP вместо создания SQL. Для примера обратитесь к KB164485 .

Вы пишете значения полей напрямую, что в большинстве случаев будет нормально, но если какой-либо текст содержит символы, такие как < или &, он не будет правильно отображаться. Перенос значений в Server.HTMLEncode методах.

...