¿Puede alguien mostrarme la forma más sencilla de realizar una consulta SQL parametrizada utilizando Classic ASP en VBscript?¿Cómo hacer una consulta SQL parametrizada en ASP clásica?
Un ejemplo compilable sería lo mejor.
¿Puede alguien mostrarme la forma más sencilla de realizar una consulta SQL parametrizada utilizando Classic ASP en VBscript?¿Cómo hacer una consulta SQL parametrizada en ASP clásica?
Un ejemplo compilable sería lo mejor.
utilizar el objeto ADODB.Command.
with createobject("adodb.command")
.activeConnection = application("connectionstring")
.commandText = "select * from sometable where id=?"
set rs = .execute(,array(123))
end with
yo también asesorar a utilizar un objeto de acceso db personalizado en lugar de utilizar directamente en adodb. Esto le permite crear una API mejor, mejorar la capacidad de prueba y agregar ganchos para la depuración/registro/creación de perfiles. En segundo lugar, puede agregar transacciones con ámbito de solicitud con retrotracción implícita sobre errores utilizando el evento class_terminiate. Oure db objeto de acceso ofrece la siguiente API de consulta
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))
¿Cómo manejo los errores en esto? – Geshan
vbscript muy elegante y mínimo - ¡Me gusta! –
Esto no funciona si la columna es numérica y el valor es nulo. ¿Hay alguna forma de que esto funcione sin usar ADODB.Command.CreateParameter? –
Supongo que se refiere a una consulta SQL parametrizada. Si este es el caso, entonces el código VBScript sería algo como esto:
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
ACTUALIZACIÓN: Es necesario incluir el archivo Adovbs.inc para que se reconozcan las constantes.
Aquí hay un enlace: ADOVBS.inc
¿Necesito incluir algún archivo para que ASP reconozca las constancias adVarchar y adParamInput? –
Sí. Aquí hay un enlace a ese archivo http://www.asp101.com/articles/john/adovbs/adovbs.inc.txt –
Esta sugerencia fue muy útil en el escenario de procedimientos almacenados – Thanigainathan
Otra opción de incluir adovbs.inc
es añadir una referencia a la biblioteca de tipos siguiente cerca de la parte superior de la ASP. Se supone que esto tiene mejor rendimiento que un include:
<!--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 es una lista de algunas bibliotecas de tipos.
+1 excelente sugerencia! – Abel
¿Se refiere a una consulta SQL parametrizada? –
sí. va a actualizar la pregunta para aclarar. ¡Gracias! –