c++ oledb 예제

이전 예제의 속성 설정은 약간 복잡해 보일 수 있습니다. 나는 이런 식으로 구조로 작업하는 것을 좋아하지 않는다. 따라서 속성 및 속성 집합을 다루는 학습 곡선을 잘라내는 ATL 클래스를 제공합니다. 이 클래스는 CDBPropSet입니다. 위의 코드가이 클래스를 사용하는 것처럼 보이는 방법을 보십시오 : 예제는 간단하게 표시됩니다 – 가능한 조금 구식 – C 및 C ++. 예제가 C 89 및 C++ 98 호환 컴파일러와 함께 작동할 것으로 예상됩니다. Visual C++를 사용하여 ADO에 사용할 수 있는 사용자 친화적인 인터페이스는 없습니다. MSDN 및 기타 사이트에는 코드 예제가 있지만 MFC에 기본 제공된 지원은 없습니다. MFC 및 클래스 마법사에 익숙한 사람은 정적 바인딩을 위해 ODBC를 사용할 때 주어진 도움을 확실히 높이 평가합니다.

정적 바인딩은 테이블에서 여러 행을 읽음/업데이트할 때 데이터베이스를 읽는 더 빠른 수단입니다. 내 목적을 위해, 이 효율성은 매우 필수적이었다. 이러한 클래스와 마법사는 이 작업을 쉽게 수행할 수 있도록 합니다. 소비자가 작업을 수행하기 전에 먼저 액세스해야 하는 데이터베이스 유형(예: SQL, Oracle, ODBC 및 MSDS)에 적합한 OLE DB 공급자를 선택합니다. 이렇게 하려면 일반적으로 열거기를 사용합니다(데이터 원본 및 세션에서 언급된 대로 CEnumerator 참조). 나는 LIBOCI의 예를 보여줍니다. LIBOCI API는 오라클 OCI API보다 사용하기 쉽습니다. 세션에서는 행 집합 및 명령 개체를 만듭니다. 명령 개체를 사용하면 SQL 명령을 사용하여 데이터베이스와 상호 작용할 수 있습니다. 행 집합 개체는 탐색할 수 있고 행을 업데이트, 삭제 및 삽입할 수 있는 데이터 집합입니다.

다음은 삽입/업데이트/삭제 기능이 있는 콘솔 모드 OLEDB 프로그램의 확장된 예입니다. 먼저 m_szName 및 m_szDescription과 같은 여러 데이터 멤버가 있는 접근자가 실제로 포함된 클래스를 선언합니다. MoveNext 메서드를 호출하면 MoveNext가 DB_S_ENDOFROWSET을 반환하고 루프를 종료할 때까지 이러한 데이터 멤버는 사용 가능한 다음 행의 적절한 값으로 채워지습니다. 데이터베이스에서 레코드를 검색하기 시작할 때 이 패턴이 일반적입니다. 예제와 같이 Close 메서드를 호출하여 세션을 닫아야 합니다. 예제는 약간 길어 보일 수 있지만 C /C ++의 데이터베이스 코드에는 많은 코드 줄이 필요한 경우가 많으며 코드 조각뿐만 아니라 완전한 예제를 보여주고 싶습니다. 연결 설정의 모든 구성 요소를 설명했기 때문에 이제 CDataSource::Open 메서드 오버로드를 설명할 수 있습니다. 각 오버로드를 사용하는 방법에 대한 코드 예제를 나열하지만 다른 데이터베이스 형식이 사용될 때마다 나열됩니다.

OLE DB는 선택한 데이터베이스에 대한 연결을 열면 모든 데이터베이스 간에 유사한 방식으로 쿼리하거나 명령을 실행할 수 있기 때문에 강력한 프레임워크입니다. 예제는 자세히 설명되지 않습니다.