Hej!
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?
/Tack på förhand!
emissionMedlem sedan dec. 19996 721 inlägg Kör Command-objektet med en aktiv Connection.
Hej Emission!
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?
Är dock supertacksam för all hjälp! :)
emissionMedlem sedan dec. 19996 721 inlägg 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.
Tack för hjälpen!
följande...
[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]
...fungerade hur fint som helst! :bire
emissionMedlem sedan dec. 19996 721 inlägg Toppen! Kom ihåg att stänga databaskopplingen, såväl efter Commit som efter Rollback.
/emission