Генерира се грешна заявка при използване на параметризирана заявка в Classic Asp

Правя извикване на база данни чрез следната параметризирана заявка.

set recordset = Server.CReateObject("ADODB.Recordset")
set cmd1  = Server.CreateObject("ADODB.Command")
cmd1.CommandText = "SELECT * FROM tbl_catmaster where (catname =? or catname =?) ORDER BY catname"
cmd1.ActiveConnection = Conn //connection object already created
cmd1.Parameters(0) = "programmer"
cmd1.Parameters(1) = "developer"
set recordset = cmd1.Execute

Проблемът ми е, че когато видя заявката в sql server profiler, тя е като:

"Select catname,catname FROM tbl_catmaster"

Моля помогнете. Използвам sql сървър 2005.


person Gaurav Pandey    schedule 05.10.2011    source източник
comment
възможен дубликат на Параметризирана заявка в Classic Asp   -  person Fionnuala    schedule 05.10.2011


Отговори (2)


Бих направил така:

function commandCreateText(conn, sql)
  dim recordset, cmd1
  set cmd1 = server.createobject("adodb.command")
  set recordset = server.createobject("adodb.recordset")
  set cmd1.activeconnection = conn //which you already have defined
  cmd1.commandtext = sql
  cmd1.commandtype = 1
  set commandCreateText = cmd1
end function

sql = "select * from tbl_catmaster where catname = ? or catname = ? order by catname"
set cmd1 = commandCreateText(conn, sql)
set recordset = cmd1.execute(, array("programmer", "developer"))

if recordset.eof then
  response.write("No records found!")
else
  do until recordset.eof
    response.write("1 record found!")
    recordset.movenext
  loop
end if
person MicBehrens    schedule 05.10.2011
comment
Този кодов фрагмент дава грешка като: Грешен брой аргументи или невалидно присвояване на свойство: 'commandCreateText' - person Gaurav Pandey; 05.10.2011
comment
Тъй като първоначално я използвах като функция :) Поставянето на функцията в страница, която е включена във всички страници, прави така, че само 3-те реда в долната част на кодовия фрагмент трябва да се повтарят :) Кодовият фрагмент е редактиран... - person MicBehrens; 05.10.2011
comment
хей erizias, сега грешката е изчезнала, но заявката не се изпълнява... възможно ли е проблемът с версията на sql сървъра? - person Gaurav Pandey; 06.10.2011
comment
току-що редактирах отговора ... Опитайте го и вижте дали ще се намери нещо :) - person MicBehrens; 06.10.2011
comment
хм... най-накрая... не мога да ти кажа колко много ми помогна... благодаря :) - person Gaurav Pandey; 06.10.2011

Трябва да създадете и добавите параметрите, не сте сигурни за профилиращия.

set prm = cmd1.CreateParameter("@prm", 200, 1,200 , "developer")
cmd1.Parameters.Append prm
person Eduardo Molteni    schedule 05.10.2011