2009-04-20 21 views

Respuesta

13

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)) 
+0

¿Cómo manejo los errores en esto? – Geshan

+0

vbscript muy elegante y mínimo - ¡Me gusta! –

+0

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? –

11

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

+0

¿Necesito incluir algún archivo para que ASP reconozca las constancias adVarchar y adParamInput? –

+1

Sí. Aquí hay un enlace a ese archivo http://www.asp101.com/articles/john/adovbs/adovbs.inc.txt –

+0

Esta sugerencia fue muy útil en el escenario de procedimientos almacenados – Thanigainathan

8

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

+1 excelente sugerencia! – Abel

Cuestiones relacionadas