Načítání dat
Po otevření zdroje dat, relace a objektů sady řádků můžete načíst data. V závislosti na typu používaného přístupového objektu možná budete muset svázat sloupce.
Načtení dat
Otevřete sadu řádků pomocí příslušného příkazu Otevřít .
Pokud používáte
CManualAccessor
, vytvořte vazbu výstupních sloupců, pokud jste to ještě neudělali. Následující příklad je převzat z ukázky DBVieweru . Pokud chcete svázat sloupce, zavolejteGetColumnInfo
a pak vytvořte příslušenství s vazbami, jak je znázorněno v následujícím příkladu:// 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();
Napište smyčku
while
pro načtení dat. Ve smyčce voláníMoveNext
pro přechod kurzoru a otestování návratové hodnoty proti S_OK, jak je znázorněno v následujícím příkladu:while (rs.MoveNext() == S_OK) { // Add code to fetch data here // If you are not using an auto accessor, call rs.GetData() }
while
Ve smyčce můžete načíst data podle vašeho typu příslušenství.Pokud používáte třídu CAccessor , měli byste mít záznam uživatele, který obsahuje datové členy. K datům můžete přistupovat pomocí těchto datových členů, jak je znázorněno v následujícím příkladu:
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); }
Pokud používáte
CDynamicAccessor
neboCDynamicParameterAccessor
třídu, můžete načíst data pomocí přístupových funkcíGetValue
aGetColumn
, jak je znázorněno v následujícím příkladu. Pokud chcete určit typ dat, která používáte, použijteGetType
.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); } }
Pokud používáte
CManualAccessor
, musíte zadat vlastní datové členy, svázat je sami a přistupovat k nim přímo, jak je znázorněno v následujícím příkladu:while (rs.MoveNext() == S_OK) { // Use the data members you specified in the calls to // AddBindEntry. wsprintf_s("%s", szFoo); }