Неправильный запрос генерируется при использовании параметризованного запроса в 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, он выглядит так:

"Select catname,catname FROM tbl_catmaster"

Пожалуйста помоги. Я использую SQL Server 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