Может ли кто-нибудь показать мне самый простой способ выполнить параметризованный SQL-запрос с использованием классического ASP в VBscript?Как сделать параметризованный SQL-запрос на классическом ASP?
Компилируемый пример был бы лучшим.
Может ли кто-нибудь показать мне самый простой способ выполнить параметризованный SQL-запрос с использованием классического ASP в VBscript?Как сделать параметризованный SQL-запрос на классическом ASP?
Компилируемый пример был бы лучшим.
Используйте объект adodb.command.
with createobject("adodb.command")
.activeConnection = application("connectionstring")
.commandText = "select * from sometable where id=?"
set rs = .execute(,array(123))
end with
Я также рекомендую использовать пользовательский объект доступа db вместо прямого использования adodb. Это позволяет вам создавать более приятный api, улучшает тестируемость и добавлять крючки для отладки/регистрации/профилирования. Во-вторых, вы можете добавлять транзакции с охватом запросов с неявным откатом на ошибках, используя событие class_terminiate. Oure дБ объект доступа предлагает следующие генерироваться единообразно
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))
Как мне обрабатывать ошибки в этом? – Geshan
очень элегантный и минимальный vbscript - мне это нравится! –
Это не работает, если столбец является числовым, а значение равно null. Есть ли способ для этого работать без использования ADODB.Command.CreateParameter? –
Я предполагаю, что вы имеете в виду параметризованный 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
UPDATE: Вы должны включить файл ADOVBS.inc для констант, которые будут признаны.
Вот ссылка: ADOVBS.inc
Мне нужно включить некоторый файл, чтобы получить ASP для распознавания констант adVarchar и adParamInput? –
Да. Вот ссылка на этот файл http://www.asp101.com/articles/john/adovbs/adovbs.inc.txt –
Это предложение было очень полезно в сценарии хранимых процедур – Thanigainathan
Другой вариант, включая 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" -->
Here список некоторых библиотек типов.
+1 отличное предложение! – Abel
Вы имеете в виду параметризованный запрос SQL? –
есть. собирается уточнить вопрос, чтобы уточнить. благодаря! –