Condividi tramite


Libreria di cursori ODBC

Alcuni driver ODBC supportano solo le impostazioni del cursore predefinite. Tali driver inoltre non supportano le operazioni del cursore posizionate, ad esempio SQLSetPos. La libreria di cursori ODBC è un componente di Microsoft Data Access Components (MDAC) utilizzato per implementare cursori a blocchi o statici in un driver che generalmente non li supporta. La libreria di cursori implementa anche le istruzioni UPDATE e DELETE e le operazioni SQLSetPos posizionate per i cursori che crea.

La libreria di cursori ODBC viene implementata come livello tra Gestione driver ODBC e il driver ODBC. Se la libreria viene caricata, a questa, e non al driver, vengono indirizzati tutti i comandi correlati al cursore. La libreria di cursori implementa un cursore mediante il recupero dell'intero set di risultati dal driver sottostante e la memorizzazione del set di risultati nella cache del client. Quando si utilizza la libreria di cursori ODBC, nell'applicazione sono disponibili solo le funzionalità di cursore della libreria di cursori e non funzionalità di cursore aggiuntive del driver sottostante.

Con il driver ODBC di SQL Server Native Client non esiste l'esigenza di utilizzare la libreria di cursori ODBC, in quanto il driver supporta un numero maggiore di funzionalità di cursore rispetto alla libreria. L'unico motivo per utilizzare la libreria di cursori ODBC con il driver ODBC di SQL Server Native Client è dato dal fatto che nel driver il supporto dei cursori viene implementato mediante i cursori server che non supportano tutti i tipi di istruzione SQL. È pertanto consigliabile utilizzare la libreria di cursori ODBC ogni volta che si richiede un cursore statico con stored procedure, batch o istruzioni SQL contenenti COMPUTE, COMPUTE BY, FOR BROWSE o INTO. È tuttavia necessario prestare attenzione nell'utilizzo della libreria in quanto memorizza nella cache del client l'intero set di risultati con conseguente impiego di grandi quantità di memoria e rallentamento delle prestazioni.

Un'applicazione richiama la libreria di cursori connessione per connessione utilizzando SQLSetConnectAttr per impostare l'attributo di connessione SQL_ATTR_ODBC_CURSORS prima della connessione a un'origine dati. L'attributo SQL_ATTR_ODBC_CURSORS può essere impostato su uno di tre valori seguenti:

  • SQL_CUR_USE_ODBC
    Quando viene impostata questa opzione con il driver ODBC di SQL Server Native Client, la libreria di cursori ODBC sostituisce il supporto nativo dei cursori del driver. Solo i tipi di cursore supportati dalla libreria di cursori possono essere utilizzati per la connessione. Non è invece possibile utilizzare i cursori server a questo scopo.

  • SQL_CUR_USE_DRIVER
    Quando viene impostata questa opzione, per la connessione è possibile utilizzare tutto il supporto nativo dei cursori con il driver ODBC di SQL Server. Non è possibile utilizzare la libreria di cursori ODBC. Tutti i cursori vengono implementati come cursori server.

  • SQL_CUR_USE_IF_NEEDED
    Quando viene impostata questa opzione, l'effetto è identico a quello dell'utilizzo dell'opzione SQL_CUR_USE_DRIVER con il driver ODBC di SQL Server Native Client. Al momento della connessione Gestione driver ODBC verifica se il driver ODBC cui si è connessi supporta l'opzione SQL_FETCH_PRIOR di SQLFetchScroll. Se il driver non supporta l'opzione, Gestione driver ODBC carica la libreria di cursori ODBC. In caso contrario, Gestione driver ODBC non carica la libreria in questione e l'applicazione utilizza il supporto nativo del driver. Poiché il driver ODBC di SQL Server Native Client supporta SQL_FETCH_PRIOR, Gestione driver ODBC non carica la libreria di cursori ODBC.

La libreria di cursori consente alle applicazioni di utilizzare più istruzioni attive in una connessione, nonché cursori scorrevoli aggiornabili. Per il supporto di tale funzionalità è necessario caricare la libreria di cursori. Utilizzare SQLSetConnectAttr per specificare il modo in cui utilizzare la libreria di cursori e SQLSetStmtAttr per indicare il tipo di cursore, la concorrenza e le dimensioni del set di righe.