Nachdem Sie die Datenquelle, die Sitzung und die Rowset-Objekte geöffnet haben, können Sie Daten abrufen. Je nach Art der Accessor, die Sie verwenden, können Sie Spalten binden müssen. Gehen folgendermaßen Sie vor um Daten abzurufen,:
/ / Aus der DBViewer-Beispiel CDBTreeView::OnQueryEdit
/ / Get die Spalteninformationen
ULONG UlColumnsnbsp; = 0;
DBCOLUMNINFO * pColumnInfo = NULL;
LPOLESTR pStrings = NULL;
Wenn (Rs.GetColumnInfo(&ulColumns, &pColumnInfo, &pStrings)! = S_OK)
AfxThrowOLEDBException (rs.m_pRowset, IID_IColumnsInfo);
Struct MYBIND * pBind = neue MYBIND [UlColumns];
Rs.CreateAccessor (UlColumns & pBind [0], sizeof(MYBIND)*ulColumns);
für (ULONG l = 0; l < UlColumns; l ++)
Rs.AddBindEntry (l + 1, DBTYPE_STR, Sizeof (TCHAR) * 40 & pBind [l] .szvalue, NULL, & pBind[l].dwStatus);
Rs.Bind()
während (Rs.Move&Next() == S_OK)
{
Nbsp; / / Fügen Sie Code zum Abrufen von Daten hier
/ / Wenn Sie kein Autoaccessor verwenden, rufen Sie Rs.GetData()
}
während (Rs.Move&Next() == S_OK)
{
Nbsp; / / Die Datenmember direkt verwenden. In diesem Fall, m_nFooID
/ / ist in ein Benutzerdatensatz, der von abgeleitet wird deklariert
/ / CAccessor
Wsprintf ("%d", rs.m_nFooID);
}
während (Rs.MoveNext() == S_OK)
{
Nbsp; / / Verwenden Sie die dynamischen Accessor-Funktionen zum Abrufen Ihrer
/ / Daten
ULONG UlColumns = Rs.GetColumnCount()];
für (ULONG ich = 0; i < UlColumns; i++)
{
Rs.GetValue(i);
}
}
während (Rs.Move&Next() == S_OK)
{
Nbsp; / / Verwenden Sie in den Aufrufen angegeben Daten-Member
/ / AddBindEntry.
Wsprintf ("%s", SzFoo);
}