<b>Om min sql-fråga ser ut så här med ren och skär conn.execute...</b> Inga fnuttar runt ?-tecknet. Så här bra gick det... <b>behöver jag skriva något mer när jag använder cmd för en UPDATE?</b> Aha, tack. Om du gör en replace på ' till \' så kommer den att databasen lagra texten \'. Med command objektet behöver du inte göra replace på sådana tecken då du skickar ett sträng värde. okej.från connection.execute till command-objektet
Conn.execute "UPDATE users SET `year`='" & var_year & "' WHERE `user`=" & Session("user")
<b>skulle den då se ut så här med command-objektet?</b>
cmd.CommandText = "UPDATE users SET `year`='?' WHERE `user`=?"
cmd.Execute (, array(var_year, session("user")))
eller behöver man inte märka ut strängar med snuffar när man kör med cmd objektet? Fler saker jag inte tänkt på/inte vet i satsen ovan?Sv: från connection.execute till command-objektet
cmd.CommandText = "UPDATE users SET `year`= ? WHERE `user` = ?"
Sv:från connection.execute till command-objektet
Microsoft VBScript compilation error '800a0414'
Cannot use parentheses when calling a Sub
/dobytar.asp, line 11
cmd.Execute (, array(var_year, session("user")))
------------------------------------------------^
behöver jag skriva något mer när jag använder cmd för en UPDATE?
cmd.CommandText = "UPDATE users SET `year`=? WHERE `user`=?"Sv: från connection.execute till command-objektet
Nej, du har gjort för mycket. Du har lagt till mer paranteser än vad VB kan förstå.
Om du tittat på mitt tidigare inlägg till dig: [konverteringsfel?] så ser du att jag inte har de yttre paranteserna.
VB dialekten är något underlig. När du anropar en subrutin så skall du inte ha paranteser:
<info>
Cannot use parentheses when calling a Sub
</info>
Två lösningar. Skippa paranteser:
cmd.Execute , array(var_year, session("user"))
Eller lägg till call:
Call cmd.Execute( , array(var_year, session("user")))
Så att skriva:
Response.Write ("Hello world!")
Är "Fel". Det räcker med/bör vara:
Response.Write "Hello world!"
Fast felet uppdagas bara när du försöker anropa en subrutin med mer än ett argument.
Detta är "Fixat"/anorlunda i vb.net då det krävs paranteser och därmed är konskevent.
Sv:från connection.execute till command-objektet
Det känns som att operationen går snabbare nu - är cmd objektet snabbare än conn.execute?
så en sista fråga, som jag nu som bekant satt uppe förra helgen och gjorde om snuffar till \' behöver jag ändra tillbaka det när jag börjar arbeta om den för cmd, eller kan jag låta dem vara? vad blir effekten? Kanske jag ska slopa mina replace-operationer över huvud taget när jag implementerat cmd??Sv: från connection.execute till command-objektet
Eventuellt kan det bli lite snabbare med ADODB.Command objektet. Då den kanske kan cahcha och inte behöver parsa texten.
Om man göra många anrop till samma fråga efter varandra så kan man tjäna på att göra:
cmd.Prepared = True
Detta är inget man tjänar någo på vid enstaka anrop.
Men om du t.ex. skall importera från en textfil eller liknande så kan du använda detta.
Sv:från connection.execute till command-objektet
nu hajar jag vad som blev fel innan - om jag kör en set rs = cmd.execute då måsta jag ha parenteser på det som följer, men om det inte handlar om att sätta en rs utan att bara utföra ett kommando, då vill den inte ha parenteser... okej.