Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Une fois que vous avez ouvert la source de données, la session et les objets d’ensemble de lignes, vous pouvez extraire des données. Selon le type d’accesseur que vous utilisez, vous devrez peut-être lier des colonnes.
Pour extraire des données
Ouvrez l’ensemble de lignes à l’aide de la commande Open appropriée.
Si vous utilisez
CManualAccessor, liez les colonnes de sortie si vous ne l’avez pas déjà fait. L’exemple suivant est extrait de l’exemple DBViewer . Pour lier les colonnes, appelezGetColumnInfo, puis créez un accesseur avec les liaisons, comme illustré dans l’exemple suivant :// From the DBViewer Sample CDBTreeView::OnQueryEdit // Get the column information ULONG ulColumns = 0; DBCOLUMNINFO* pColumnInfo = NULL; LPOLESTR pStrings = NULL; if (rs.GetColumnInfo(&ulColumns, &pColumnInfo, &pStrings) != S_OK) ThrowMyOLEDBException(rs.m_pRowset, IID_IColumnsInfo); struct MYBIND* pBind = new MYBIND[ulColumns]; rs.CreateAccessor(ulColumns, &pBind[0], sizeof(MYBIND)*ulColumns); for (ULONG l=0; l<ulColumns; l++) rs.AddBindEntry(l+1, DBTYPE_STR, sizeof(TCHAR)*40, &pBind[l].szValue, NULL, &pBind[l].dwStatus); rs.Bind();Écrivez une
whileboucle pour récupérer les données. Dans la boucle, appelezMoveNextpour avancer le curseur et tester la valeur de retour par rapport à S_OK, comme illustré dans l’exemple suivant :while (rs.MoveNext() == S_OK) { // Add code to fetch data here // If you are not using an auto accessor, call rs.GetData() }Dans la
whileboucle, vous pouvez extraire les données en fonction de votre type d’accesseur.Si vous utilisez la classe CAccessor , vous devez avoir un enregistrement utilisateur qui contient des membres de données. Vous pouvez accéder à vos données à l’aide de ces membres de données, comme illustré dans l’exemple suivant :
while (rs.MoveNext() == S_OK) { // Use the data members directly. In this case, m_nFooID // is declared in a user record that derives from // CAccessor wsprintf_s("%d", rs.m_nFooID); }Si vous utilisez le ou
CDynamicParameterAccessorlaCDynamicAccessorclasse, vous pouvez extraire des données à l’aide des fonctionsGetValued’accès etGetColumn, comme illustré dans l’exemple suivant. Si vous souhaitez déterminer le type de données que vous utilisez, utilisezGetType.while (rs.MoveNext() == S_OK) { // Use the dynamic accessor functions to retrieve your data. ULONG ulColumns = rs.GetColumnCount(); for (ULONG i=0; i<ulColumns; i++) { rs.GetValue(i); } }Si vous utilisez
CManualAccessor, vous devez spécifier vos propres membres de données, les lier vous-même et y accéder directement, comme illustré dans l’exemple suivant :while (rs.MoveNext() == S_OK) { // Use the data members you specified in the calls to // AddBindEntry. wsprintf_s("%s", szFoo); }