Delen via


ODBC-cursors

Een toepassing haalt gegevens op met een cursor. Een cursor verschilt van een resultatenset: een resultatenset is de set rijen die overeenkomen met bepaalde zoekcriteria, terwijl een cursor de software is die deze rijen naar de toepassing retourneert. De naamcursor, zoals deze van toepassing is op databases, is waarschijnlijk afkomstig van de knipperende cursor op een computerterminal. Net zoals die cursor de huidige positie op het scherm aangeeft en waar de getypte woorden vervolgens worden weergegeven, geeft een cursor op een resultatenset de huidige positie in de resultatenset aan en welke rij er vervolgens wordt geretourneerd.

Het cursormodel in ODBC is gebaseerd op het cursormodel in ingesloten SQL. Een belangrijk verschil tussen deze modellen is de manier waarop cursors worden geopend. In ingesloten SQL moet een cursor expliciet worden gedeclareerd en geopend voordat deze kan worden gebruikt. In ODBC wordt een cursor impliciet geopend wanneer een instructie waarmee een resultatenset wordt gemaakt, wordt uitgevoerd. Wanneer de cursor wordt geopend, wordt deze vóór de eerste rij van de resultatenset geplaatst. In zowel ingesloten SQL als ODBC moet een cursor worden gesloten nadat de toepassing deze heeft gebruikt.

Verschillende cursors hebben verschillende kenmerken. Het meest voorkomende type cursor, een zogenaamde alleen-doorstuurcursor, kan alleen vooruitgaan door de resultatenset. Als u wilt terugkeren naar een vorige rij, moet de toepassing de cursor sluiten en opnieuw openen en rijen lezen vanaf het begin van de resultatenset totdat deze de vereiste rij bereikt. Cursors met alleen-doorstuur bieden een snel mechanisme voor het maken van één doorgang door een resultatenset.

Alleen-vooruit-cursors zijn minder handig voor schermtoepassingen waarin de gebruiker door de gegevens heen en weer kan scrollen. Dergelijke toepassingen kunnen een forward-only cursor gebruiken door de resultatenset eenmaal te lezen, de gegevens lokaal in de cache te plaatsen en het scrollen zelf uit te voeren. Dit werkt echter alleen goed met kleine hoeveelheden gegevens. Een betere oplossing is het gebruik van een schuifbare cursor, die willekeurige toegang biedt tot de resultatenset. Dergelijke toepassingen kunnen ook de prestaties verhogen door meer dan één rij gegevens tegelijk op te halen, met behulp van een blokcursor. Zie Blokcursors gebruiken voor meer informatie over blokcursors.

De doorstuurcursor is het standaardcursortype in ODBC en wordt in de volgende paragrafen besproken. Zie Blokcursors en Schuifbare Cursors voor meer informatie over blokcursors en schuifbare cursors.

Belangrijk

Door een transactie vast te leggen of terug te draaien, hetzij door expliciet SQLEndTran aan te roepen of te werken in de automatische commit-modus, sluiten sommige gegevensbronnen automatisch alle cursors op alle instructies binnen een verbinding. Zie de kenmerken SQL_CURSOR_COMMIT_BEHAVIOR en SQL_CURSOR_ROLLBACK_BEHAVIOR in de beschrijving van de functie SQLGetInfo voor meer informatie.