Jag behöver köra en updatesats genom en loop, och vill därför använda någon transaction ifall det skulle bli fel.
Har för tillfället kört updaten med Commandobjekt, i stället för att köra med execute-metoden i Connectionobjektet.
Men kan jag köra med transaction på något enkelt sätt när jag använder commandobjektet, eller behöver jag byta till connection-objektet för detta?
Jag har använt command-objektet eftersom jag har förstått att det skall vara snabbare?
Du säger att jag skall köra med en active connection, så här ser koden ut idag....
set Com1 = Server.CreateObject("ADODB.Command")
Com1.ActiveConnection = kopplingssträng
'påbörja transaktion?
for i = 1 to n_times
Com1.CommandText = "UPDATE blablablabl..blabla..."
Com1.CommandType = 1
Com1.CommandTimeout = 0
Com1.Prepared = True
Com1.Execute()
Next
'kontrollera felnummer..
'fullfölja eller avbryta transaktion..
Jag förstår dock inte riktigt hur du menar?
Hur anger jag att transaktionen skall på börjas och avslutas? Jag har inte sett några sådana egenskaper för commandobjektet.
Hur kontrolleras om något fel(felnummer) uppstått ex.? Så att jag då kan informera användaren.
Jag har inte tidigare använt mig av commandobjektet så här, så jag är ganska vilsen... Jag kanske har fattat helt fel?
Med en aktiv connection menar jag att du ska använda en ADODB.Connection som ActiveConnection, i stället för att bara skicka in kopplingssträngen. Du ska alltså använda både Connection och Command.
[1]
set myconn = Server.CreateObject("adodb.connection")
myconn.open databaskoppling
insert
sub insert
on error resume next
myconn.begintrans
set com1 = Server.CreateObject("ADODB.Command")
com1.ActiveConnection = myconn
for i = 1 to 10
com1.CommandText = "INSERT INTO t1 (invarde) VALUES (" & i & ")"
com1.CommandType = 1
com1.CommandTimeout = 0
com1.Prepared = True
com1.Execute()
if err.number <> 0 then
felsub
exit sub 'avsluta subrutinen om fel inträffar
end if
next
myconn.committrans 'om alla operationer lyckas...
end sub
sub felsub
response.Write(err.number)
myconn.rollbacktrans
'ev. operationer
end sub[/1]