Condividi tramite


Cursori scorrevoli

Nelle applicazioni moderne basate sullo schermo, l'utente scorre indietro e avanti tra i dati. Per tali applicazioni, tornare a una riga recuperata in precedenza è un problema. Una possibilità è chiudere e riaprire il cursore e quindi recuperare le righe finché il cursore non raggiunge la riga richiesta. Un'altra possibilità consiste nel leggere il set di risultati, memorizzarlo nella cache in locale e implementare lo scorrimento nell'applicazione. Entrambe le possibilità funzionano bene solo con piccoli set di risultati, e quest'ultima possibilità è difficile da implementare. Una soluzione migliore consiste nell'usare un cursore scorrevole, che può spostarsi indietro e avanti nel set di risultati.

Un cursore scorrevole viene comunemente usato nelle applicazioni moderne basate sullo schermo in cui l'utente scorre avanti e indietro tra i dati. Tuttavia, le applicazioni devono usare cursori scorrevoli solo quando i cursori forward-only non eseguiranno il processo, poiché i cursori scorrevoli sono in genere più costosi rispetto ai cursori forward-only.

La possibilità di spostarsi all'indietro genera una domanda non applicabile ai cursori forward-only: è necessario che un cursore scorrevole rilevi le modifiche apportate alle righe recuperate in precedenza? Ovvero, è necessario rilevare le righe aggiornate, eliminate e appena inserite?

Questa domanda si verifica perché la definizione di un set di risultati, ovvero il set di righe che corrisponde a determinati criteri, non indica quando vengono controllate le righe per verificare se corrispondono a tale criterio, né indica se le righe devono contenere gli stessi dati ogni volta che vengono recuperate. L'omissione precedente consente ai cursori scorrevoli di rilevare se le righe sono state inserite o eliminate, mentre quest'ultima consente loro di rilevare i dati aggiornati.

La possibilità di rilevare le modifiche è talvolta utile, a volte non. Ad esempio, un'applicazione di contabilità necessita di un cursore che ignora tutte le modifiche; il bilanciamento dei libri è impossibile se il cursore mostra le modifiche più recenti. D'altra parte, un sistema di prenotazione aerea necessita di un cursore che mostri le modifiche più recenti ai dati; senza un cursore di questo tipo, è necessario rieseguire continuamente una query sul database per mostrare la disponibilità dei voli più aggiornata.

Per soddisfare le esigenze di applicazioni diverse, ODBC definisce quattro diversi tipi di cursori scorrevoli. Questi cursori variano sia in spese che nella capacità di rilevare le modifiche apportate al set di risultati. Si noti che se un cursore scorrevole può rilevare le modifiche apportate alle righe, può rilevarle solo quando tenta di recuperare tali righe; Non esiste alcun modo per l'origine dati di notificare al cursore le modifiche alle righe attualmente recuperate. Si noti anche che la visibilità delle modifiche è controllata anche dal livello di isolamento delle transazioni; per altre informazioni, vedere Isolamento delle transazioni.

Questa sezione contiene i seguenti argomenti: