ASP Classique Paramètre Nommé dans Paramaterized Requête: Doit déclarer la variable scalaire
Je suis en train d'écrire une requête paramétrée en ASP Classique, et il commence à se sentir comme je suis de battre ma tête contre un mur. J'obtiens l'erreur suivante:
Doit déclarer la variable scalaire "@quelque chose".
J'avouerais qu'est ce que le bonjour de ligne, mais peut-être que je suis absent quelque chose...
<% OPTION EXPLICIT %>
<!-- #include file="../common/adovbs.inc" -->
<%
Response.Buffer=false
dim conn,connectionString,cmd,sql,rs,parm
connectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Data Source=.\sqlexpress;Initial Catalog=stuff"
set conn = server.CreateObject("adodb.connection")
conn.Open(connectionString)
set cmd = server.CreateObject("adodb.command")
set cmd.ActiveConnection = conn
cmd.CommandType = adCmdText
cmd.CommandText = "select @something"
cmd.NamedParameters = true
cmd.Prepared = true
set parm = cmd.CreateParameter("@something",advarchar,adParamInput,255,"Hello")
call cmd.Parameters.append(parm)
set rs = cmd.Execute
if not rs.eof then
Response.Write rs(0)
end if
%>
OriginalL'auteur My Alter Ego | 2009-07-07
Vous devez vous connecter pour publier un commentaire.
Voici un exemple de code à partir d'un article de MSDN Library sur la prévention des attaques par injection SQL. Je ne trouve pas l'URL d'origine, mais une recherche sur google le titre de mots-clés (Prévention des Injections SQL en ASP) devrait vous permettre d'y parvenir assez rapidement. Espérons que cet exemple réel aide.
Voir la page suivante sur le site MSDN, près du fond, en se référant à des paramètres nommés.
MSDN exemple
Voir la mise à jour que j'ai posté pour la réponse.
OriginalL'auteur Bork Blatt
ADO va s'attendre à des points d'interrogation à la place des noms de paramètres réels dans ce cas. Maintenant, le SQL "select @quelque chose" n'est pas réellement paramétrable: il voit le "@quelque chose comme" (non déclarées) variable SQL, pas en tant que paramètre. Changer votre CommandText ligne:
Et je pense que vous allez obtenir le résultat que vous recherchez.
Bonne chance!
Après avoir essayé quelques variations de cela, je n'étais pas en mesure de venir avec une solution. Je soupçonne que l'utilisation de paramètres nommés est seulement d'aller travailler si vous êtes l'appel d'une procédure stockée, pas l'envoi d'une commande SQL.
OriginalL'auteur Chris Nielsen
OriginalL'auteur Joost Moesker
Je ne suis pas sûr de ce que votre requête est destinée à accomplir. Je suis également pas sûr que les paramètres sont autorisés dans la liste de sélection. MSDN utilisé pour l'avoir (il y a plusieurs années, probablement) un décent article sur où les paramètres ont été admis dans une requête, mais je n'arrive pas à le trouver maintenant.
OTTOMH, vos tentatives pour fournir les valeurs de paramètre pour ADO l'air correct. Est-ce que votre requête à exécuter si vous faites quelque chose comme cela?
OriginalL'auteur Chris Farmer