Jag ser ingen anledning att inte använda .Execute i samtliga fall, förutom när du explicit måste använda .Open på ett Recordset, av vilken anledning det nu må vara.
Desstuom; anropa med "con.Execute(sql**, ,128**)" också.
4 svar · 424 visningar · startad av Addeladde
Hej
Hur stor skillnad blir det på dessa två sätt att öppna ett recordset?
1
Set RS = Server.CreateObject( "ADODB.Recordset" )
RS .ActiveConnection = Con
RS .CursorType = 3
RS .Open sqlString
2
Set RS = con.execute(sqlString)
Jag ser ingen anledning att inte använda .Execute i samtliga fall, förutom när du explicit måste använda .Open på ett Recordset, av vilken anledning det nu må vara.
Desstuom; anropa med "con.Execute(sql**, ,128**)" också.
execute är alltså snabbare?
För att hämta ut data, om du bara ska iterera framåt genom recordset'et, så ja.
Skillnaderna är dock väldigt små såvida du inte har mycket anrop (mycket trafik).
Alltså detta handlar egentligen inte om någon prestandaskillnad, utan vilka egenskaper ditt recordset får vilket påverkar vad du kan göra med det.
Men om du bara ska hämta poster ur databasen och visa dom rakt upp och ner så är det snabbast att använda execute.
Om du använder execute-metoden på ett databasobjektet så kan du inte sätta speciella egenskaper på recordsetet du får tillbaka. Du får istället ett klent (men resurssnålt) recordset som är Read-only och Forward-only, vilket betyder att du exempelvis bara kan gå framåt bland posterna, och inte använda metoderna MovePrevious eller MoveFirst. Recordsetet ärver dessutom CursorLocation från databasobjektet.
Men om du istället skapar ett separat recordset-objekt med Server.Createobject så kan du sätta vilka egenskaper du vill. Detta är bra om du exempelvis vill dela upp posterna i flera sidor och behöver CursorLocation 3.