ASP e i database:  parte seconda




Un cursore è un tipo di software collegato con un database che specifica il modo in cui deve o può essere manipolato un recordset. Il suo nome deriva dal significato che nell'ambito dei computer esso assume: cioè un puntatore che può scorrere in un certo modo attraverso le righe di una tabella. 
Quando si apre un recordset si  effettuano generalmente 4 tipi di operazione: lettura, modifica, aggiunta, cancellazione. La possibilità di fare una o più di tali operazioni e il modo in cui esse possono essere effettuate dipende dal tipo di cursore che scegliamo
Un altro aspetto importante è rappresentato dal fatto il database è di solito condiviso in rete e questo comporta che le modifiche ad un record  possono essere effettuate concorrentemente da più operatori . In alcuni casi queste modifiche devono essere visualizzate in tempo reale, per es. prenotazione voli, in altri  non è necessario nè voluto  

Un cursore richiede l'uso delle risorse del PC: memoria, hard-disk, processore. Se il cursore sta sul server è necessario allocare tali risorse per ogni utente che utilizza il database e questo potrebbe essere dispendioso per il server. Si può allora decidere di allocarlo sul client. In altre parole mentre nel primo caso il recordset e il software che lo gestisce risiedono sul server per tutto il tempo di utilizzazione, nel secondo caso il server trasferisce il recordset sul computer del client e delega al software del provider dati  locale la gestione del tutto. L'unico svantaggio del cursore sul client  è che le modifiche da parte di altri utenti non vengono visualizzate in tempo reale. 

Vedremo ora i tipi di cursore e le loro performances.

Un cursore si specifica impostando la proprietà cursortype dell'oggetto recordset.  

I valori possibili sono:

Costante simbolica Costante numerica Descrizione
adOpenForwardOnly 0 E' possibile soltanto il movimento in avanti. Le modifiche dall'esterno sono visibili, ma a partire dalla riga correntemente processata dal cursore. 
adOpenStatic    3 Permette lo scrolling avanti/indietro ma non riporta i cambiamenti effettuati dall'esterno. Consente la modifica e l'aggiunta di records. 
adOpenKeyset       1 Permette lo scrolling avanti/indietro, la modifica e l'inserzione.  I cambiamenti fatti dall'interno o dall'esterno sono visibili facendo scrolling ma le inserzioni dall'esterno sono visibili solo riaprendo il recordset. Le inserzioni fatte dall'interno invece sono visibili alla fine del recordset. 
adOpenDynamic 2 Come il precedente ma stavolta tutte le modifiche, inserzioni o cancellazioni sono visibile, sia esterne che interne 

La locazione del cursore si specifica con la proprietà cursorlocation dell'oggetto recordset . I valori sono:

Costante simbolica Costante numerica Descrizione
adUseServer 2 Il cursore è sul server
adUseClient    3  Il cursore è sul client

E' possibile impostare le proprietà descritte o assegnando il numero corrispondente, per es. recS.cursortype=3 oppure assegnando corrispondente la costante simbolica. In questo caso si deve includere il file adojavas.inc