Après que vous ouvrez la source de données, session et objets jeu de lignes, vous pouvez extraire les données. Selon le type d'accesseur que vous utilisez, vous devrez lier des colonnes. Pour extraire les données, procédez comme suit:
/ / De la CDBTreeView::OnQueryEdit de l'exemple DBVIEWER
/ / Obtenir les informations de colonne
ULONG ulColumnsnbsp ; = 0 ;
DBCOLUMNINFO * pColumnInfo = NULL ;
LPOLESTR pStrings = NULL ;
Si (rs.GetColumnInfo(&ulColumns, &pColumnInfo, &pStrings)! = S_OK)
AfxThrowOLEDBException (rs.m_pRowset, IID_IColumnsInfo) ;
struct MYBIND * commandes pBind = nouvelle MYBIND [ulColumns] ;
RS.CreateAccessor (ulColumns, & commandes pBind [0], sizeof(MYBIND)*ulColumns) ;
pour (ULONG l = 0; l < ulColumns; l ++)
RS.AddBindEntry (l + 1, DBTYPE_STR, sizeof (TCHAR) * 40, & commandes pBind [l] .szvalue, NULL, & pBind[l].dwStatus) ;
RS.Bind()
alors que (rs.Move&Next() == S_OK)
{
nbsp ; / / Ajouter du code pour extraire les données ici
/ / Si vous n'utilisez pas un accesseur automatique, appelez rs.GetData()
}
alors que (rs.Move&Next() == S_OK)
{
nbsp ; / / Utiliser les membres de données directement. Dans ce cas, m_nFooID
/ / est déclarée dans un enregistrement utilisateur qui dérive de
/ / CAccessor
wsprintf (« %d », rs.m_nFooID) ;
}
alors que (rs.MoveNext() == S_OK)
{
nbsp ; / / Utiliser les fonctions d'accesseur dynamique pour récupérer votre
/ / données
ULONG ulColumns = rs.Et getColumnCount() inclus ;
pour (ULONG I = 0; i < ulColumns; i ++)
{
RS.GetValue(i) ;
}
}
alors que (rs.Move&Next() == S_OK)
{
nbsp ; / / Utiliser les membres de données, vous avez spécifié dans les appels à
/ / AddBindEntry.
wsprintf ("%s", szFoo) ;
}