sqlInsert="INSERT INTO tabell (Namn, Skostorlek, Alder) VALUES ('?','?','?')"
DataConn.Execute(sqlInsert, array(strName,strSize,strAld))
kanske?
15 svar · 1 407 visningar · startad av Emil RT
Har tagit för vana att använda parametriserade frågor vid login mm. Typ:
Set command = server.createobject("ADODB.command")
cmd.activeConnection = DataConn
sqlFraga = "SELECT * FROM anvandare WHERE (Namn=? AND Losen=?)"
command.CommandText = sqlFraga
Set Rs=command.Execute(, array(namn, losen))
i stället för:
Set Rs=Server.CreateObject("ADODB.Recordset")
sqlFraga = "select * FROM anvandare WHERE " & _
'"Namn= '" & namn & "' and " & _
'"Losen= '" & losen & "' "
Rs.Open sqlFraga, DataConn
Så, hur funkar det då med en "insert"? För jag antar att man behöver modda dessa också.
sqlInsert="INSERT INTO tabell (Namn, Skostorlek, Alder) VALUES ('"&strName&"','"&strSize&"', '"&strAld&"')"
DataConn.Execute(sqlInsert)
Tips?
sqlInsert="INSERT INTO tabell (Namn, Skostorlek, Alder) VALUES ('?','?','?')"
DataConn.Execute(sqlInsert, array(strName,strSize,strAld))
kanske?
Man behöver alltså inte blanda in:
Set command = server.createobject("ADODB.command")
(ska villigt erkänna att jag inte är helt 100 på alla begreppen)
Set DataConn = Server.CreateObject("ADODB.Connection")
tror jag (eller hoppas) du har på din kod idag...
"INSTERT", "UPDATE" och "DELETE" behöver du ju bara "köra".. du behöver inte hämta någon data som du gör med "SELECT".
Med den kod rad du har postat kan man inte säga mer om vad som fattas i din kod.
Har inte hunnit testa koden förrän nu men det verkar som det är något problem med raden:
DataConn.Execute(sqlInsert, array(strName,strSize,strAld))
Funkade bra innan jag bytte till frågetecken.
Set command = server.createobject("ADODB.command")
cmd.activeConnection = DataConn
sqlFraga = "INSERT INTO tabell (Namn, Skostorlek, Alder) VALUES (?,?,?)"
command.CommandText = sqlFraga
command.Execute(, array(strName, strSize, strAld))
:?
cmd.activeConnection = DataConn ser inte jag som något måste.. du använder ju den faktist aldrig.
och:
sqlInsert="INSERT INTO tabell (Namn, Skostorlek, Alder) VALUES ('?','?','?')"
DataConn.Execute(sqlInsert, array(strName,strSize,strAld))
borde fungera om du ha skrivit exakt så...
Så störigt detta är ...
Inser att allt ni skriver borde funka. När jag testar får jag:
Microsoft VBScript compilation error '800a0414'
Cannot use parentheses when calling a Sub
line 82
DataConn.Execute(sqlFraga, array(strName,strSize,strAld))
---------------------------------------------------------------^
Tar jag bort raden funkar resten av funkationerna i .asp filen men den raden sabbar allt. Hur länge jag än sitter och stirrar på den så ser jag inte vad felet kan vara.
/E
Får samma fel om jag byter ut mot statiska värden. (isf strName osv).
Emil RT skrev:
Cannot use parentheses when calling a Sub
Kanske världens mest solklara felmeddelande.
DataConn.Execute sqlFraga, array(strName,strSize,strAld)
Åja, finns solklarare:
http://gizmodo.com/photogallery/windowserrors/1000301540
Låste mig lite väl mycket vid att det skulle vara ett komplicerat fel=)
Tack för hjälpen folks!
När vi ändå är inne på parametriserade frågor med ADO:
Hur fungerar det med olika datatyper?
Ska man ha appostrofer runt placeholders eller ej?
Känner den automatiskt av om det är ett numeriskt värde eller en textsträng?
Escape:ar den automatiskt alla specialtecken som kan ställa till problem?
Hoppas något kan klargöra detta.
Emil RT skrev:
Åja, finns solklarare:
http://gizmodo.com/photogallery/windowserrors/1000301540
:)
Troxy skrev:
Ska man ha appostrofer runt placeholders eller ej?
Nej
Troxy skrev:
Känner den automatiskt av om det är ett numeriskt värde eller en textsträng?
Det beror egentligen på providern, men man ska ha som vana att typomvandla det man skickar in.
DataConn.Execute sqlFraga, array(cstr(strName),clng(lngSize))
Troxy skrev:
Escape:ar den automatiskt alla specialtecken som kan ställa till problem?
Japp