どのようにデータを取得します。?

データ ソース、セッション、および行セット オブジェクトを開いた後、データをフェッチすることができます。使用するアクセサーの種類、列をバインドする必要があります。データをフェッチするには、次の手順を実行します。:

  1. 適切なを使用して行セットを開く開く]コマンド。

  2. CManualAccessorを使用している場合は、していない場合、出力列をバインドします。列をバインドするには、 GetColumnInfoを呼び出すし、ここに示すように、バインディングでは、アクセサーを作成:
     ・ DBViewer サンプル CDBTreeView::OnQueryEdit から//列情報を取得します。ULONG ulColumnsnbsp;= 0;設定した DBCOLUMNINFO ※ pColumnInfo = NULL;LPOLESTR pStrings = NULL;場合 (rs。GetColumnInfo(&ulColumns, &pColumnInfo, &pStrings) ! S_OK =)AfxThrowOLEDBException (rs.m_pRowset、IID_IColumnsInfo);構造体 MYBIND ※ の新しい MYBIND [ulColumns]; =rs。CreateAccessor (ulColumns との [0] sizeof(MYBIND)*ulColumns);(ULONG l = 0; l < ulColumns; l + +)rs。AddBindEntry (l + 1、DBTYPE_STR、sizeof (TCHAR) ※ 40、& の [l] .szvalue、NULL、& pBind[l].dwStatus);rs。Bind()
    
  3. データを取得するには、 whileループを記述します。次の例で示すように、カーソルを進めるし、戻り値S_OK、に対してをテストするには、 MoveNextを、ループ内でを呼び出す:
    (rs 中。MoveNext() S_OK = =){特価;//ここのデータをフェッチするコードを追加//自動アクセサーを使用していない場合は、rs を呼び出します。GetData()}(&N)
    
  4. Whileループ内で、アクセサーの種類に応じてデータをフェッチすることができます。
    • CAccessorクラスを使用する場合は、データ メンバーを含むユーザー レコードが必要です。ここで示すようにこれらのデータ メンバーを使用してデータをアクセスすることができます。:
      (rs 中。MoveNext() S_OK = =){特価;・ データ メンバーを直接使用します。このケースでは、m_nFooID//から派生した、ユーザー レコードで宣言されています。//CAccessorwsprintf (「%d」、rs.m_nFooID);}(&N)
      
    • CDynamicAccessorまたはCDynamicParameterAccessorクラスを使用する場合は、データGetValueおよびGetColumnへのアクセス機能を使用して、次のコードに示すようにフェッチできます。使用しているデータの型を判断するには、 GetTypeを使用します。
      (rs 中。MoveNext() S_OK = =){特価;・取得するには、動的アクセサー関数を使用して//データULONG ulColumns = rs。GetColumnCount();(ULONG I = 0; 私は < ulColumns; i + +){rs。GetValue(i);}}
      
    • CManualAccessorを使用する場合は、独自のデータ メンバーを指定する、バインドして、次のように直接アクセス:
      (rs 中。MoveNext() S_OK = =){特価;/への呼び出しで指定したデータ メンバーを使用します。//AddBindEntry。wsprintf ("%s"、szFoo);}(&N)
      

Index