webForumDet fria alternativet

Ännu en parametriserade frågor fråga:)

ASP

15 svar · 1 407 visningar · startad av Emil RT

Medlem sedan feb. 2004200 inlägg
Frågan#1

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?

Medlem sedan juni 20019 519 inlägg
#2
sqlInsert="INSERT INTO tabell (Namn, Skostorlek, Alder) VALUES ('?','?','?')" 
  DataConn.Execute(sqlInsert, array(strName,strSize,strAld))

kanske?

Medlem sedan feb. 2004200 inlägg
#3

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)

Medlem sedan juni 20019 519 inlägg
#4
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.

Medlem sedan feb. 2004200 inlägg
#5

Presisly, har en inkluderad fil som öppnar databasen.

Tror jag är med nu... Tack så mycket!

Medlem sedan feb. 2004200 inlägg
#6

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.

Medlem sedan jan. 20023 327 inlägg
#7

Kanske så här?

sqlInsert="INSERT INTO tabell (Namn, Skostorlek, Alder) VALUES (?,?,?)"

Medlem sedan mars 20007 896 inlägg
#8
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))

:?

Medlem sedan juni 20019 519 inlägg
#9

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å...

Medlem sedan feb. 2004200 inlägg
#10

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

Medlem sedan feb. 2004200 inlägg
#11

Får samma fel om jag byter ut mot statiska värden. (isf strName osv).

Medlem sedan juni 200032 967 inlägg
Medlem sedan dec. 19996 721 inlägg
#13

Emil RT skrev:

Cannot use parentheses when calling a Sub

Kanske världens mest solklara felmeddelande.

DataConn.Execute sqlFraga, array(strName,strSize,strAld)
Medlem sedan feb. 2004200 inlägg
#14

Å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!

Medlem sedan mars 20041 505 inlägg
#15

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.

Medlem sedan dec. 19996 721 inlägg
#16

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

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)