Quelqu'un peut-il me montrer la manière la plus simple d'effectuer une requête SQL paramétrée en utilisant ASP classique dans VBScript?Comment faire une requête SQL paramétrée sur ASP classique?
Un exemple compilable serait le meilleur.
Quelqu'un peut-il me montrer la manière la plus simple d'effectuer une requête SQL paramétrée en utilisant ASP classique dans VBScript?Comment faire une requête SQL paramétrée sur ASP classique?
Un exemple compilable serait le meilleur.
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))
Comment gérer les erreurs dans ce cas? – Geshan
VBScript très élégant et minimal - je l'aime! –
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? –
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
dois-je inclure un fichier pour qu'ASP reconnaisse les constantes adVarchar et adParamInput? –
Oui. Voici un lien vers ce fichier http://www.asp101.com/articles/john/adovbs/adovbs.inc.txt –
Cette suggestion a été très utile dans le scénario des procédures stockées – Thanigainathan
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 excellente suggestion! – Abel
Faites-vous référence à une requête SQL paramétrée? –
oui. va mettre à jour la question pour clarifier. Merci! –