2009-04-20 10 views

Répondre

13

Utilisez l'objet ADODB.Command.

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

Je vous conseille également d'utiliser un objet d'accès db personnalisé au lieu d'utiliser directement adodb. Cela vous permet de construire une meilleure API, d'améliorer la testabilité et d'ajouter des hooks pour le débogage/la journalisation/le profilage. Deuxièmement, vous pouvez ajouter des transactions de portée de requête avec des restaurations implicites sur des erreurs en utilisant l'événement class_terminiate. l'objet d'un accès de Oure offre la api requête suivante

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

Comment gérer les erreurs dans ce cas? – Geshan

+0

VBScript très élégant et minimal - je l'aime! –

+0

Cela ne fonctionne pas si la colonne est numérique et la valeur est null. Est-il un moyen pour que cela fonctionne sans utiliser ADODB.Command.CreateParameter? –

11

Je suppose que vous faites référence à une requête SQL paramétrée. Si tel est le cas, le code VBScript ressemblerait à quelque chose comme ceci:

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 

MISE À JOUR: Vous devez inclure le fichier Adovbs.inc pour les constantes soient reconnues.

Voici un lien: ADOVBS.inc

+0

dois-je inclure un fichier pour qu'ASP reconnaisse les constantes adVarchar et adParamInput? –

+1

Oui. Voici un lien vers ce fichier http://www.asp101.com/articles/john/adovbs/adovbs.inc.txt –

+0

Cette suggestion a été très utile dans le scénario des procédures stockées – Thanigainathan

8

Une autre option d'inclure adovbs.inc est d'ajouter une référence à la bibliothèque de type suivante vers le haut de votre ASP. Soi-disant ce qui a de meilleures performances qu'un comprennent:

<!--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 est une liste de certaines bibliothèques de types.

+1

+1 excellente suggestion! – Abel

Questions connexes