Как сделать параметризованный SQL-запрос на Classic ASP? - PullRequest
9 голосов
/ 21 апреля 2009

Может кто-нибудь показать мне самый простой способ выполнения параметризованного запроса SQL с использованием Classic ASP в VBscript?

Лучше всего подойдет компилируемый пример.

Ответы [ 3 ]

13 голосов
/ 21 апреля 2009

Используйте объект adodb.command.

with createobject("adodb.command")
    .activeConnection = application("connectionstring")
    .commandText = "select * from sometable where id=?"
    set rs = .execute( ,array(123))
end with

Я бы также посоветовал использовать пользовательский объект доступа к БД вместо непосредственного использования adodb. Это позволяет вам создавать более приятные API-интерфейсы, улучшает тестируемость и добавлять хуки для отладки / регистрации / профилирования Во-вторых, вы можете добавить транзакции в области запроса с неявным откатом на ошибки, используя событие class_terminiate. Объект доступа Oure DB предлагает следующий запрос API

call db.execute("update some_table set column=? where id=?", array(value, id))
set rs = db.fetch_rs("select * from some_table where id=?", array(id))
count = db.fetch_scalar("select count(*) from some_table where column > ?", array(value))
11 голосов
/ 21 апреля 2009

Я предполагаю, что вы имеете в виду параметризованный SQL-запрос. Если это так, то код VBScript будет выглядеть примерно так:

Set adoCon = Server.CreateObject("ADODB.Connection")
adoCon.Open "connectionstring"
SET cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = adoCon
cmd.CommandType= adCmdStoredProc 
cmd.CommandText = "GetCustomerByFirstName" 

cmd.Parameters.Append cmd.CreateParameter("@FirstName",adVarchar,adParamInput,50,"John")    

Set Rec = cmd.Execute()
While NOT Rec.EOF
  'code to iterate through the recordset
  Rec.MoveNext
End While

ОБНОВЛЕНИЕ: Для распознавания констант необходимо включить файл ADOVBS.inc.

Вот ссылка: ADOVBS.inc

8 голосов
/ 24 апреля 2009

Другой вариант включения adovbs.inc - добавить ссылку на следующую библиотеку типов в верхней части ASP. Предположительно, это имеет лучшую производительность, чем включение:

<!--METADATA TYPE="TypeLib" NAME="ADODB Type Library" UUID="00000205-0000-0010-8000-00AA006D2EA4" FILE="C:\Program Files\Common Files\System\ado\msado15.dll" VERSION="2.5" -->

Здесь - список некоторых библиотек типов.

...