OLE DB 소비자 만들기

ATL COM 마법사 및 ATL 개체마법사 를 사용 하 여 OLE DB 템플릿 소비자를 생성할 수 있습니다. 。

프로젝트를 만들려면 ATL OLE DB 소비자에 대 한

  1. 파일 메뉴에서 새로 만들기를 선택 합니다. 새로 만들기 대화 상자가 나타납니다.

  2. 프로젝트 탭에서 ATL COM 마법사 선택 합니다.

    프로젝트 탭에서 프로젝트에 이름을 지정한 다음 확인을클릭 합니다. ATL COM 마법사 표시。

  3. ATL COM 마법사에서 프로젝트 형식을 선택 하십시오.

  4. 완료 하 고 확인 을 클릭 합니다.

그런 다음 ATL 개체 마법사를 사용 하 여。

ATL 개체 마법사를 사용 하려면

  1. 삽입 메뉴에서 새 ATL 개체를 선택 합니다. ATL 개체 마법사가 나타납니다.

  2. 왼쪽된 창에서 데이터 액세스를 선택 합니다. 소비자 아이콘이 오른쪽 창에 표시 됩니다.

  3. 소비자 아이콘을 선택 하 고 을 클릭 합니다. ATL 개체 마법사 속성 대화 상자가 나타납니다.

ATL 개체 마법사를 사용 하 여 소비자에 대 한 속성 설정。

ATL 개체 마법사를 사용 하 여 소비자 속성을 설정 하려면

  1. ATL 개체 마법사 속성 대화 상자에서 데이터 소스 선택 단추를 클릭 합니다. 새 데이터 링크 만들기 대화 상자가 나타납니다.

  2. 새 데이터 링크 만들기 대화 상자에서 OLE DB 공급자 및 적절 한 옵션을 포함 하 여 선택:
    • 데이터 공급자에 의해 사용에 대 한 위치와 데이터 소스。

    • 로그온 ID와 암호를 데이터 소스에 대 한。

    공급자와 기타 설정을 선택한 후 이전 대화 상자 페이지에서 선택한 항목을 확인 하려면 연결 테스트를 클릭 합니다. 결과 상자를 보고 하는 경우 PASSED , 데이터 연결을 만들려면 완료 를 클릭 합니다. 데이터베이스 테이블 선택 대화 상자가 나타납니다.

  3. 데이터베이스 테이블 선택 대화 상자에서 트리 컨트롤 사용 하 여 테이블, 쿼리 또는 저장된 프로시저를 선택 하 고 확인을클릭 합니다. ATL 개체 마법사 속성 대화 상자에 반환。

  4. 짧은 이름, 클래스, 접근자및 에 대 한 이름을 대화 상자를 채웁니다.H 파일. 마지막 4 약식 이름을 기준으로 합니다. 원하는 경우이 이름을 편집할 수 있습니다.

  5. CCommand만들어집니다-기본적으로 소비자를 기반으로 합니다. CTable을 선호 하는 경우-소비자 기반 표 버튼을 선택。

  6. 필요한 경우 변경, 삽입 및 삭제 된 행 집합의 레코드를 지원 하기 위해 변경, 삽입및 삭제 를 선택 하십시오.

  7. 확인 을 클릭。

접근자 클래스 및 샘플에 표시 된 것과 같이 명령 (또는 테이블) 클래스 마법사 발전기 아래 출력 합니다. 명령 클래스에는 데이터 소스와 마법사에서 지정 하는 행 집합을 여는 코드를 포함 합니다. 접근자 클래스에는 선택한 데이터베이스 테이블에 대 한 열 맵을 포함。

// Product.H : Declaration of the CProduct class
#ifndef __PRODUCT_H_
#define __PRODUCT_H_
class CProductAccessor
{
public:
   LONG m_ProductID;   // Number automatically assigned to new product.
   TCHAR m_ProductName[41];   // Number automatically assigned to new product.
   LONG m_SupplierID;   // Same entry as in Suppliers table.
   LONG m_CategoryID;   // Same entry as in Categories table.
   TCHAR m_QuantityPerUnit[21];   // (e.g., 24-count case, 1-liter bottle).
   DB_NUMERIC m_UnitPrice;   // (e.g., 24-count case, 1-liter bottle).
   SHORT m_UnitsInStock;   // (e.g., 24-count case, 1-liter bottle).
   SHORT m_UnitsOnOrder;   // (e.g., 24-count case, 1-liter bottle).
   SHORT m_ReorderLevel;   // Minimum units to maintain in stock.
   VARIANT_BOOL m_Discontinued;   // Yes means item is no longer available.

BEGIN_COLUMN_MAP(CProductAccessor)
   COLUMN_ENTRY(1, m_ProductID)
   COLUMN_ENTRY(2, m_ProductName)
   COLUMN_ENTRY(3, m_SupplierID)
   COLUMN_ENTRY(4, m_CategoryID)
   COLUMN_ENTRY(5, m_QuantityPerUnit)
   COLUMN_ENTRY(6, m_UnitPrice)
   COLUMN_ENTRY(7, m_UnitsInStock)
   COLUMN_ENTRY(8, m_UnitsOnOrder)
   COLUMN_ENTRY(9, m_ReorderLevel)
   COLUMN_ENTRY_TYPE(10, DBTYPE_BOOL, m_Discontinued)
END_COLUMN_MAP()
DEFINE_COMMAND(CProductAccessor, _T(" \
   SELECT \
      ProductID, \
      ProductName, \
      SupplierID, \
      CategoryID, \
      QuantityPerUnit, \
      UnitPrice, \
      UnitsInStock, \
      UnitsOnOrder, \
      ReorderLevel, \
      Discontinued  \
      FROM Products"))};
class CProduct : public CCommand<CAccessor<CProductAccessor> >
{
public:
   HRESULT Open()
   {
      HRESULT      hr;
      hr = OpenDataSource();
      if (FAILED(hr))
         return hr;
      return OpenRowset();
   }
   HRESULT OpenDataSource()
   {
      HRESULT      hr;
      CDataSource db;
      CDBPropSet   dbinit(DBPROPSET_DBINIT);
      dbinit.AddProperty(DBPROP_INIT_DATASOURCE, OLESTR("OLE_DB_NWind_Jet"));
      dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4);
      dbinit.AddProperty(DBPROP_INIT_LCID, (long)1033);
      hr = db.Open(_T("MSDASQL"), &dbinit);
      if (FAILED(hr))
         return hr;
      return m_session.Open(db);
   }
   HRESULT OpenRowset()
   {
      // Set properties for open
      CDBPropSet   propset(DBPROPSET_ROWSET);
      propset.AddProperty(DBPROP_IRowsetChange, true);
      propset.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE);
      return CCommand<CAccessor<CProductAccessor> >::Open(m_session, NULL, &propset);
   }
   CSession   m_session;
};
#endif // __PRODUCT_H_

OLE DB 소비자 템플릿을 사용 하 여 다시

Index