Wat is een recordset?
Een recordset is een verzameling records die geretourneerd wordt als we gegevens uit een
database opvragen met SQL. ADO bevat het Recordset object, zodat
je deze gegevens kunt manipuleren. Je kunt onder andere door de records in een recordset
heen bladeren, de records wijzigen of records toevoegen (zolang de cursor niet
ReadOnly is), de gegevens opslaan in een bestand, XML of een array.
Wat is een Cursor?
Om door de records heen te kunnen navigeren heeft een recordset een cursor. De cursor staat
op het huidige record (mits er records in de recordset zitten). Er zijn verschillende typen
cursors, met verschillende mogelijkheden. Hieronder staat een overzicht van de verschillende
cursors:
| Cursor |
Eigenschappen |
| adOpenForwardOnly |
Alleen van voor naar achter door de recordset bladeren.
Updates van anderen zijn niet zichtbaar.
|
| adOpenStatic |
Heen en weer bladeren mogelijk.
Updates van anderen zijn niet zichtbaar.
|
| adOpenDynamic |
Heen en weer bladeren mogelijk.
Updates van anderen zijn zichtbaar.
|
| adOpenKeyset |
Zoals adOpenDynamic, maar met wat verschillende details.
|
Een gedetailleerd overzicht van cursor-eigenschappen vind je
hier.
Wat is het Lock-type?
Een recordset kan alleen-lezen zijn, of wijzigbaar. Naast alleen-lezen zijn er
drie soorten wijzigbare recordsets. Hieronder staat een overzicht met de mogelijke
Lock-types:
| Lock-type |
Eigenschappen |
| adLockReadOnly |
Alleen lezen |
| adLockPessimistic |
Zodra er wijzigingen in een record worden aangebracht, wordt deze gesloten voor andere
gebruikers. Wanneer de Update methode wordt aangeroepen, wordt
het record in de database gewijzigd en vrijgegeven.
|
| adLockOptimistic |
Wijzigingen worden doorgevoerd in de database als de Update methode
wordt aangeroepen. Pas dan probeert ADO een lock te krijgen.
|
| adLockBatchOptimistic |
Handig als er meerdere wijzigingen gedaan moeten worden. Eerst pas je alle records in de
recordset aan en vervolgens gebruik je de UpdateBatch methode om
alle records in één keer te wijzigen in de database.
|
Welk Cursor- en Lock-type moet ik gebruiken?
Een recordset dat meer mogelijkheden heeft dan nodig is, verspilt behoorlijk wat geheugen
en kost snelheid. Het is dus nodig om het beste type recordset te gebruiken voor wat je
wilt. Hoef je geen updates te doen, dan gebruik je een ReadOnly recordset. In andere gevallen
kun je over het algemeen het beste Optimistic of BatchOptimistic gebruiken.
Binnen ASP is het eigenlijk niet nodig om de wijzigingen van andere gebruikers te zien.
Het is daarom verstandig om ForwardOnly of Static te gebruiken waar mogelijk. In
deze tabel
kun je zien wanneer je over moet schakelen naar Dynamic of Keyset cursors.
|