Condividi tramite


Dimensione del set di righe del cursore

I cursori ODBC non si limitano a recuperare una sola riga alla volta. Possono infatti recuperare più righe in ogni chiamata a SQLFetch o SQLFetchScroll. Quando si utilizza un database client/server come Microsoft SQL Server, è consigliabile recuperare diverse righe contemporaneamente. Il numero di righe restituite da un'operazione di recupero è definita dimensione del set di righe e viene specificata utilizzando l'oggetto SQL_ATTR_ROW_ARRAY_SIZE di SQLSetStmtAttr.

SQLUINTEGER uwRowsize;
SQLSetStmtAttr(m_hstmt, SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER)uwRowsetSize, SQL_IS_UINTEGER);

I cursori con una dimensione del set di righe maggiore di 1 vengono definiti cursori a blocchi.

Sono disponibili due opzioni per associare le colonne dei set di risultati per i cursori a blocchi:

  • Associazione per colonna

    Ogni colonna viene associata a una matrice di variabili. Ogni matrice include lo stesso numero di elementi come dimensione del set di righe.

  • Associazione per riga

    Una matrice viene compilata utilizzando strutture che contengono i dati e gli indicatori per tutte le colonne di una riga. La matrice include lo stesso numero di strutture come dimensione del set di righe.

Quando si utilizza l'associazione per colonna o riga, ogni chiamata a SQLFetch o SQLFetchScroll riempie le matrici associate con i dati del set di righe recuperato.

SQLGetData può essere utilizzato anche per recuperare i dati di colonna da un cursore a blocchi. Poiché SQLGetData agisce su una riga alla volta, è necessario chiamare SQLSetPos per impostare una riga specifica nel set di righe come riga corrente prima di chiamare SQLGetData.

Il driver ODBC di SQL Server Native Client offre un'ottimizzazione basata sull'uso di set di righe per recuperare rapidamente un intero set di risultati. Per utilizzare questa ottimizzazione, impostare gli attributi del cursore sulle relative impostazioni predefinite (forward-only, sola lettura, dimensione del set di righe = 1) al momento della chiamata a SQLExecDirect o SQLExecute. Il driver ODBC di SQL Server Native Client imposta un set di risultati predefinito. Questa soluzione risulta più efficiente dei cursori del server quando si trasferiscono risultati al client senza scorrimento. Al termine dell'esecuzione dell'istruzione, aumentare la dimensione del set di righe e utilizzare l'associazione per colonna o per riga. In questo modo sarà possibile utilizzare in SQL Server un set di risultati predefinito per inviare righe di risultati in modo efficiente al client, mentre il driver ODBC di SQL Server Native Client effettua continuamente il pull delle righe dai buffer di rete sul client.

Vedere anche

Concetti