Share via


Taille de l'ensemble de lignes d'un curseur

Les curseurs ODBC peuvent extraire plusieurs lignes à la fois. Ils peuvent récupérer plusieurs lignes dans chaque appel à SQLFetch ou SQLFetchScroll. Lorsque vous utilisez une base de données client/serveur, telle que Microsoft SQL Server, il est plus efficace d'extraire plusieurs lignes à la fois. Le nombre de lignes retournées sur une extraction est appelé « taille de l'ensemble de lignes ». Il est spécifié en utilisant le paramètre SQL_ATTR_ROW_ARRAY_SIZE de SQLSetStmtAttr.

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

Les curseurs dont la taille de l'ensemble de lignes est supérieure à 1 sont appelés « curseurs de bloc ».

Deux options s'offrent à vous pour lier des colonnes de jeu de résultats pour des curseurs de bloc :

  • Liaison selon les colonnes

    Chaque colonne est liée à un tableau de variables. Chaque tableau possède un nombre d'éléments égal à la taille de l'ensemble de lignes.

  • Liaison selon les lignes

    Un tableau est construit à l'aide de structures qui contiennent les données et d'indicateurs pour toutes les colonnes d'une ligne. Le tableau possède un nombre de structures égal à la taille de l'ensemble de lignes.

Lorsque la liaison selon les colonnes ou la liaison selon les lignes est utilisée, chaque appel à SQLFetch ou SQLFetchScroll remplit les tableaux liés des données de l'ensemble de lignes récupéré.

SQLGetData peut également être utilisé pour récupérer les données de colonne d'un curseur de bloc. SQLGetData opérant une ligne à la fois, SQLSetPos doit être appelé pour définir une ligne spécifique dans l'ensemble de lignes en tant que ligne en cours avant d'appeler SQLGetData.

Le pilote ODBC de SQL Server Native Client offre une optimisation utilisant des ensembles de lignes pour récupérer rapidement un jeu de résultats entier. Pour utiliser cette optimisation, attribuez aux attributs de curseur leurs valeurs par défaut (avant uniquement, lecture seule, taille de l'ensemble de lignes = 1) au moment où SQLExecDirect ou SQLExecute est appelé. Le pilote ODBC de SQL Server Native Client configure un jeu de résultats par défaut. Cette approche est plus efficace que les curseurs côté serveur lors du transfert de résultats au client sans défilement. Après avoir exécuté l'instruction, augmentez la taille de l'ensemble de lignes et utilisez la liaison selon les colonnes ou la liaison selon les lignes. Cela permet à SQL Server d'utiliser un jeu de résultats par défaut pour envoyer efficacement des lignes de résultat au client, pendant que le pilote ODBC de SQL Server Native Client extrait en continu des lignes des mémoires tampon réseau sur le client.

Voir aussi

Concepts