Partager 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 lors d’une extraction est appelé taille de l’ensemble de lignes et est spécifié à l’aide de la 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 au niveau des colonnes ou des lignes est utilisée, chaque appel à SQLFetch ou SQLFetchScroll remplit les tableaux liés avec les données de l’ensemble de lignes récupérés.

SQLGetData peut également être utilisé pour récupérer des données de colonne à partir d’un curseur de bloc. Étant donné que SQLGetData fonctionne une ligne à la fois, SQLSetPos doit être appelé pour définir une ligne spécifique dans l’ensemble de lignes en tant que ligne active avant d’appeler SQLGetData.

Le pilote ODBC SQL Server Native Client offre une optimisation à l’aide d’ensembles de lignes pour récupérer rapidement l’ensemble d’un jeu de résultats. Pour utiliser cette optimisation, définissez les attributs du curseur sur leurs valeurs par défaut (transfert uniquement, lecture seule, taille de l’ensemble de lignes = 1) au moment où SQLExecDirect ou SQLExecute est appelé. Le pilote ODBC 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, tandis que le pilote ODBC SQL Server Native Client extrait en continu les lignes des mémoires tampons réseau sur le client.

Voir aussi

Propriétés de curseur