Параметризованный запрос в Classic Asp - PullRequest
3 голосов
/ 05 октября 2011

Мой код доступа к БД выглядит следующим образом:

set recordset = Server.CReateObject("ADODB.Recordset")
set cmd1  = Server.CreateObject("ADODB.Command")
cmd1.ActiveConnection = Conn //connection object already created
cmd1.CommandText = "SELECT * FROM lbr_catmaster where catname = ?"
cmd1.CommandType = adCmdText
set prm = cmd1.CreateParameter("@prm", 200, 1,200 , "development")
cmd1.Parameters.Append prm
set recordset = cmd1.Execute

Но удар по дб не идет. Пожалуйста, помогите с этим. Я использую SQL Server 2005.

Спасибо.

Ответы [ 4 ]

4 голосов
/ 05 октября 2011

В моем коде вот так я получаю набор записей из команды:

Set rs = server.createobject("ADODB.Recordset")
Set cmd = server.createobject("ADODB.Command")

cmd.ActiveConnection = Conn //connection object already created
cmd.CommandText = "SELECT * FROM lbr_catmaster where catname = ?"
cmd.CommandType = adCmdText
cmd.CommandTimeout = 900 

set prm = cmd.CreateParameter("@prm", 200, 1, 200, "development")
cmd.Parameters.Append prm

' Execute the query for readonly
rs.CursorLocation = adUseClient
rs.Open cmd, , adOpenForwardOnly, adLockReadOnly

Надеюсь, это поможет

1 голос
/ 10 февраля 2012

Мне нравится использовать Parameters.Refresh, т.е.

set recordset = Server.CReateObject("ADODB.Recordset")
set cmd1  = Server.CreateObject("ADODB.Command")
cmd1.ActiveConnection = Conn //connection object already created
cmd1.CommandText = "SELECT * FROM lbr_catmaster where catname = ?"
cmd1.CommandType = adCmdText
cmd1.Prepared = True ' only needed if u plan to reuse this command often
cmd1.Parameters.Refresh
cmd1.Parameters(0).Value = "development"
set recordset = cmd1.Execute
0 голосов
/ 05 октября 2011

Попробуйте опустить имя параметра:

set prm = cmd1.CreateParameter(, 200, 1,200 , "development")
0 голосов
/ 05 октября 2011

Похоже, что вы не указали правильно названный параметр в своем запросе.

Попробуйте заменить:

cmd1.CommandText = "SELECT * FROM lbr_catmaster where catname = ?"

на:

cmd1.CommandText = "SELECT * FROM lbr_catmaster where catname = @prm"

и посмотрите,это помогает.

...