ASP-Classic Namens-Parameter in Paramaterized-Abfrage: erklären Muß, die Skalare variable
Ich versuche zu schreiben, Sie eine parametrisierte Abfrage in ASP-Classic, und es beginnt zu fühlen, wie ich bin, schlägt meinen Kopf gegen eine Wand. Ich bin immer der folgende Fehler:
Erklären muß, die Skalare variable "@irgendwas".
Ich würde schwören, daß das, was der Hallo-Linie macht, aber vielleicht bin ich etwas fehlt...
<% 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
%>
InformationsquelleAutor My Alter Ego | 2009-07-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist etwas Beispielcode aus der MSDN Library-Artikel auf Verhinderung von SQL-injection-Angriffe. Ich kann nicht finden, die original-URL, sondern googeln die Titel keywords (Vermeidung von SQL-Injections in ASP) sollten Sie es schnell genug. Hoffe das real-world-Beispiel hilft.
Finden Sie unter die folgende Seite auf der MSDN-Website, in der Nähe der Unterseite, damit konkret benannte Parameter.
MSDN-Beispiel
Siehe update, die ich geschrieben, die Antwort.
InformationsquelleAutor Bork Blatt
ADO erwarten Fragezeichen anstelle der tatsächlichen Namen der parameter in diesem Fall. Jetzt den SQL "select @etwas" ist eigentlich nicht parametriert: Sie sieht die "@irgendwas" als eine (nicht deklarierte) SQL-variable nicht als parameter. Ändern Sie Ihre CommandText-line:
Und ich denke, Sie werden das Ergebnis bekommen, das Sie suchen.
Glück!
Nach dem Versuch ein paar Varianten dieses, ich war nicht in der Lage zu kommen mit einer Lösung. Ich vermute, dass die benannte Parameter verwenden, wird nur funktionieren, wenn Sie den Aufruf einer gespeicherten Prozedur, nicht senden, bis Sie einen SQL-Befehl.
InformationsquelleAutor Chris Nielsen
InformationsquelleAutor Joost Moesker
Ich bin mir nicht sicher, was Ihre Abfrage ist beabsichtigt zu erreichen. Ich bin mir auch nicht sicher, dass die Parameter dürfen in der select-Liste. MSDN verwendet zu haben (vor vielen Jahren, wahrscheinlich) einen anständigen Artikel auf wo die Parameter durften in einer Abfrage, aber ich kann nicht scheinen zu finden, es jetzt.
OTTOMH, Ihre versuche zu liefern, die Werte der parameter ADO korrekt Aussehen. Hat deine Abfrage ausführen, wenn Sie so etwas tun?
InformationsquelleAutor Chris Farmer