TN055: MFC DAO 클래스를 MFC ODBC 데이터베이스 클래스 응용 프로그램 마이그레이션

개요

많은 상황에서 MFC의 DAO 데이터베이스 클래스를 MFC의 ODBC 데이터베이스 클래스를 사용 하는 응용 프로그램을 마이그레이션하는 것이 좋을 수 있습니다. 이 기술 노트 것입니다 대부분의 MFC ODBC와 DAO 클래스 간의 차이점을 자세히 설명 합니다. 마음에 차이가, 그것은 어려운 해서는 안됩니다 지나치게 마이그레이션할 응용 프로그램 ODBC 클래스에서 MFC 클래스를 원하는 경우。

왜 ODBC에서 DAO로 마이그레이션?

거기에 여러 가지 이유가 왜 DAO 데이터베이스 클래스를 ODBC 데이터베이스 클래스에서 응용 프로그램을 마이그레이션하는 것이 좋습니다 하지만 결정은 반드시 간단 하거나 분명 한. 한 가지 명심에서 해야 할 ODBC 드라이버가 있는 모든 ODBC 데이터 원본 읽기 DAO에 의해 사용 되는 Microsoft Jet 데이터베이스 엔진을 수 있습니다. ODBC 데이터베이스 클래스를 사용 하 여 나 자신, 하지만 Microsoft Jet 데이터베이스 엔진 ODBC 데이터를 읽을 수 있습니다. 직접 ODBC를 호출 하는 것이 더 효율적이 될 수 있습니다.

ODBC/DAO 결정을 쉽게 간단한 경우도 있습니다. 예를 들어 때만 하면 Microsoft jet (Access 형식, FoxPro 형식, Excel 형식 등등) 명백한 선택 DAO 데이터베이스 클래스를 사용 하는 직접 읽을 수 있는 형식으로 데이터에 액세스。

보다 복잡 한 경우 데이터 서버에 또는 다양 한 다른 서버에 존재 하는 경우 발생 합니다. 이 경우 ODBC 데이터베이스 클래스는 DAO 데이터베이스 클래스를 사용 하 여 결정 어려운 중 하나입니다. 원하는 유형이 다른 조인 (조인 데이터 서버에서 SQL Server 및 Oracle과 같은 여러 형식), 같은 것 들을 할 경우 Microsoft Jet 데이터베이스 엔진 대신 ODBC 데이터베이스 클래스를 사용 하거나 ODBC를 직접 호출 하는 경우 필요한 작업을 수행 하는 것을 강요에 대 한 조인을 수행할. 당신의 최선의 선택에 ODBC 데이터베이스 클래스에 있을 드라이버 커서를 지 원하는 ODBC 드라이버를 사용 하는 경우。

그래서 당신의 특별 한 요구를 제공 하는 다양 한 방법의 성능 테스트를 몇 가지 예제 코드를 작성 하는 것이 좋습니다 선택 복잡 하 게 될 수 있습니다. 이 기술 참고 DAO 데이터베이스 클래스는 ODBC 데이터베이스 클래스에서 마이그레이션할 결정을 내렸다 하는 것을 가정 합니다.

ODBC 데이터베이스 클래스와 MFC DAO 데이터베이스 클래스 간의 유사성

MFC ODBC 클래스의 원래 디자인 Microsoft Access 및 Microsoft Visual Basic에서 사용에서 된 DAO 개체 모델에 기반 했다. 이 모두이 섹션에 나열 될 것입니다 하는 ODBC와 MFC DAO 클래스의 일반적인 기능으로 많은 것을 의미 합니다. 일반적으로 프로그래밍 모델은 동일。

몇 가지 유사성을 강조 하기 위해:

예를 들어 두 모델에서 데이터를 검색 하는 절차는 데이터베이스 개체 열기, 만들기 및 recordset 개체를 열 및 만들고 탐색 (이동) 하지만 몇 가지 작업을 수행 하는 데이터。

ODBC와 MFC DAO 클래스의 차이점

DAO 클래스의 더 많은 개체 등 다양 한 방법, 하지만이 섹션 것입니다 유사한 클래스 및 기능 차이 자세히만。

아마 클래스 간의 가장 명백한 차이 유사한 클래스 및 전역 함수에 대 한 이름을 변경 합니다. 다음 목록에는 표시 이름 변경 ofnbsp; 개체, 메서드 및 데이터베이스 클래스와 관련 된 전역 함수(&N):

클래스 또는 함수 MFC DAO 클래스에 상응 하
CDatabase CDaoDatabase
CDatabase::ExecuteSQL CDaoDatabase::Execute
CRecordset CDaoRecordset
CRecordset::GetDefaultConnect CDaoRecordset::GetDefaultDBName
CFieldExchange CDaoFieldExchange
RFX_Bool DFX_Bool
RFX_Byte DFX_Byte
RFX_Int DFX_Short
RFX_Long DFX_Long
DFX_Currency
RFX_Single DFX_Single
RFX_Double DFX_Double
RFX_Date * DFX_Date (COleDateTime-기반)
RFX_Text DFX_Text
RFX_Binary DFX_Binary
RFX_LongBinary DFX_LongBinary

※ RFX_Date 함수 CTime 및 TIMESTAMP_STRUCT 에 따라。

아래에 나열 된 응용 프로그램에 영향을 미칠 수 있으며 보다 더 간단한 이름을 변경 해야 하는 기능에 큰 변화。

  1. 상수와 매크로 레코드 집합 같은 것 들을 유형 연 recordset 옵션을 지정 하는 데 변경 되었습니다.

    ODBC 클래스와 MFC 매크로 통해 이러한 옵션을 정의 하는 데 필요한 또는 유형 열거。

    DAO 클래스와 DAO 헤더 파일 (DBDAOINT에서에서 이러한 옵션의 정의 제공합니다.H). 따라서 레코드 집합 종류를 열거의 멤버인 CRecordset, 하지만 DAO 상수 대신. CDaoRecordset 형식을 지정할 때 ODBC 하지만 DB_OPEN_SNAPSHOT 에서 CRecordset 의 형식을 지정할 때 스냅숏 사용 예。

  2. CRecordset 에 대 한 기본 레코드 집합 유형을 기본 recordset 형식을 하는 동안 스냅숏 CDaoRecordset 다이너셋 에 대 한은 (ODBC 클래스 스냅숏에 대 한 추가적인 문제에 대 한 아래 참고 참조)。

  3. ODBC CRecordset 클래스에는 앞 으로만 이동 가능한 레코드 집합 종류를 만드는 옵션을. CDaoRecordset 클래스에서 앞 으로만 이동 가능한 인지 하지 recordset 유형을 하지만 오히려 속성 (옵션) 특정 유형의 레코드 집합。

  4. 추가 전용 recordset CRecordset 개체를 열 때 레코드 집합의 데이터를 읽기 및 추가 수는 의미 합니다. CDaoRecordset 개체 추가 전용 옵션 의미 그대로 레코드 집합의 데이터만 수 추가 (그리고 읽을 수 없습니다)。

  5. ODBC 클래스 트랜잭션 멤버 함수는 CDatabase 및 데이터베이스 수준에서 법의 구성원입니다. DAO 클래스에서 트랜잭션 멤버 함수는 더 높은 수준의 클래스 (CDaoWorkspace)의 구성원 및 따라서 동일한 작업 (트랜잭션의 공간을) 공유 하는 여러 CDaoDatabase 개체 영향。

  6. Exception 클래스 변경 되었습니다. CDBExceptions ODBC 클래스와 CDaoExceptions 에서 DAO 클래스에 던져 질。

  7. DFX_Date 사용 COleDateTime RFX_Date CTime 및 TIMESTAMP_STRUCT 개체를 사용 합니다. COleDateTime CTime, 거의 동일 하지만 훨씬 더 큰 범위의 데이터를 저장할 수 있도록 4 바이트 time_t 보다 8 바이트 OLE 날짜 에 기반。

메모nbsp;??DAO (CDaoRecordset) 스냅숏은 읽기 전용 동안 ODBC (CRecordset) 스냅샷 드라이버와 ODBC 커서 라이브러리의 사용에 따라 업데이트할 수 있습니다. 커서 라이브러리를 사용 하는 경우 CRecordset 스냅숏은 업데이트할 수 있습니다. 데스크톱 드라이버 팩 3.0에서 Microsoft 드라이버가 사용 ODBC 커서 라이브러리 없이, 경우 CRecordset 스냅숏은 읽기 전용입니다. 다른 드라이버를 사용 하는 경우 드라이버의 설명서를 스냅샷 (STATIC_CURSORS)는 읽기 전용 참조 확인(&N)。

기술 노트 번호로 |nbsp; 카테고리별 기술 노트(&N)

Index