Utilizzo di cursori a blocchi con API

I cursori API del server non consentono soltanto di recuperare una riga per volta, ma possono essere utilizzati per recuperare più righe in ogni operazione. Quando si utilizzano database client/server, ad esempio Microsoft SQL Server, risulta più efficiente recuperare più righe contemporaneamente. Il numero di righe restituito per ogni operazione di recupero rappresenta la dimensione del set di righe. I cursori con dimensione del set di righe maggiore di uno vengono definiti cursori a blocchi. Nelle API supportate è possibile utilizzare i cursori a blocchi nei modi seguenti:

  • ODBC

    • Impostare l'attributo di istruzione SQL_ATTR_ROWSET_SIZE sulla dimensione del set di righe.

    • Tramite l'associazione per colonna o per riga, associare le colonne a matrici di variabili in cui archiviare i dati delle righe restituite. Il numero di elementi di ogni matrice corrisponde alla dimensione del set di righe.

    • A ogni chiamata di SQLFetchScroll viene recuperato il numero di righe impostato tramite SQL_ATTR_ROWSET_SIZE.

  • OLE DB

    • Allocare una matrice di handle di riga e associare le colonne rappresentate da ogni handle a una matrice di variabili in cui archiviare i dati della colonna.

    • Chiamare il metodo IRowset::GetNextRows impostando il parametro cRows sul numero di handle della matrice di handle di riga e il parametro prghRows sull'indirizzo della matrice.

  • ADO

    • Impostare le dimensioni (Dim) di una variabile Variant in modo da consentire l'archiviazione dei dati del numero di righe che si desidera recuperare.

    • Facoltativamente, eseguire un posizionamento nel punto adeguato del cursore utilizzando i metodi del recordset Move, MoveFirst, MoveLast, MoveNext e MovePrevious.

    • Chiamare il metodo del recordset GetRows impostando il parametro array sull'indirizzo della variabile Variant in cui archiviare le righe e il parametro Crows sul numero di righe da restituire. Facoltativamente, impostare il parametro Start per indicare la posizione di recupero nel recordset.