Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Po otwarciu źródła danych, sesji i obiektów zestawu wierszy można pobrać dane. W zależności od używanego typu metody dostępu może być konieczne powiązanie kolumn.
Aby pobrać dane
Otwórz zestaw wierszy przy użyciu odpowiedniego polecenia Otwórz .
Jeśli używasz polecenia
CManualAccessor, powiąż kolumny wyjściowe, jeśli jeszcze tego nie zrobiono. Poniższy przykład jest pobierany z przykładu programu DBViewer . Aby powiązać kolumny, wywołaj metodęGetColumnInfo, a następnie utwórz metodę dostępu z powiązaniami, jak pokazano w poniższym przykładzie:// 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();Pisanie pętli w
whilecelu pobrania danych. W pętli wywołaj metodęMoveNext, aby przejść kursor i przetestować wartość zwracaną względem S_OK, jak pokazano w poniższym przykładzie:while (rs.MoveNext() == S_OK) { // Add code to fetch data here // If you are not using an auto accessor, call rs.GetData() }whileW pętli można pobrać dane zgodnie z typem metody dostępu.Jeśli używasz klasy CAccessor , musisz mieć rekord użytkownika zawierający elementy członkowskie danych. Dostęp do danych można uzyskać przy użyciu tych elementów członkowskich danych, jak pokazano w poniższym przykładzie:
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); }Jeśli używasz
CDynamicAccessorklasy lubCDynamicParameterAccessor, możesz pobrać dane przy użyciu funkcjiGetValuedostępu iGetColumn, jak pokazano w poniższym przykładzie. Jeśli chcesz określić typ używanych danych, użyj poleceniaGetType.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); } }Jeśli używasz metody
CManualAccessor, musisz określić własne elementy członkowskie danych, powiązać je samodzielnie i uzyskać do nich dostęp bezpośrednio, jak pokazano w poniższym przykładzie:while (rs.MoveNext() == S_OK) { // Use the data members you specified in the calls to // AddBindEntry. wsprintf_s("%s", szFoo); }