데이터를 인출 하는 방법?

데이터 소스, 세션 및 행 집합 개체를 연 후에 데이터를 페치할 수 있습니다. 사용 하는 접근자의 형식에 따라, 당신은 열을 바인딩할 필요가 있습니다. 데이터를 페치 하려면 다음이 단계를 수행:

  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 * pBind = 새로운 MYBIND [ulColumns];
    rs입니다.CreateAccessor (ulColumns, 및 pBind [0], sizeof(MYBIND)*ulColumns);
    에 대 한 (ULONG l = 0; l < ulColumns; l + +)
    rs입니다.AddBindEntry (l + 1, DBTYPE_STR, 우리 모두의 sizeof (TCHAR) * 40, & pBind [l].szvalue NULL & pBind[l].dwStatus);
    rs입니다.Bind)
    
  3. 데이터를 검색 하 는 동안 루프를 작성 합니다. 루프에서 MoveNext 를 호출 커서를 이동 하 고 S_OK대 한 반환 값을 테스트는 다음 예제와 같이:
    동안 (rs.MoveNext() = S_OK)
    {
     nbsp; / / 여기에 데이터를 반입 하는 코드 추가
     ? / / 자동 접근자를 사용 하지 않는 경우 전화 rs.핸들러의
    }(&N)
    
  4. 반면 루프 내에서 접근자 형식에 따라 데이터를 페치할 수 있습니다.
    • CAccessor 클래스를 사용 하는 경우 데이터 멤버가 들어 있는 사용자 레코드가 있어야 합니다. 여기에서 보이는 것과 같이 해당 데이터 멤버를 사용 하 여 데이터를 액세스할 수 있습니다.:
      동안 (rs.MoveNext() = S_OK)
      {
       nbsp; / / 데이터 멤버를 직접 사용 합니다. 이 경우에 m_nFooID
       ? / /에서 파생 되는 사용자 레코드에서 선언
       ? / / CAccessor
       ? wsprintf ("%d", rs.m_nFooID); 
      }(&N)
      
    • CDynamicAccessor 또는 CDynamicParameterAccessor 클래스를 사용 하는 경우 다음 코드 에서처럼 GetValue 및 GetColumn액세스 함수를 사용 하 여 데이터를 페치할 수 있습니다. GetType 을 사용 하는 경우에 사용 하는 데이터의 유형을 확인.
      동안 (rs.MoveNext() = S_OK)
      {
       nbsp; / / 동적 접근자 함수를 사용 하 여 검색 하 여
       ? / / 데이터
      
      ULONG ulColumns rs =.GetColumnCount();
       ? 에 대 한 (ULONG I = 0; 난 < ulColumns; i + +)
       ? {
       ??? rs입니다.GetValue(i);
       ? }
      }
      
    • CManualAccessor를 사용 하는 경우 사용자 고유의 데이터 멤버를 지정, 직접 바인딩해야 하며 여기에서 보이는 것과 같이 그들을 직접 액세스:
      동안 (rs.MoveNext() = S_OK)
      {
       nbsp; / / 사용 하는 호출에 지정 된 데이터 멤버
       ? / / AddBindEntry.
      
      wsprintf ("%s", szFoo);
      }(&N)
      

Index