개요
많은 상황에서 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 에 따라。
아래에 나열 된 응용 프로그램에 영향을 미칠 수 있으며 보다 더 간단한 이름을 변경 해야 하는 기능에 큰 변화。
ODBC 클래스와 MFC 매크로 통해 이러한 옵션을 정의 하는 데 필요한 또는 유형 열거。
DAO 클래스와 DAO 헤더 파일 (DBDAOINT에서에서 이러한 옵션의 정의 제공합니다.H). 따라서 레코드 집합 종류를 열거의 멤버인 CRecordset, 하지만 DAO 상수 대신. CDaoRecordset 형식을 지정할 때 ODBC 하지만 DB_OPEN_SNAPSHOT 에서 CRecordset 의 형식을 지정할 때 스냅숏 사용 예。
메모nbsp;??DAO (CDaoRecordset) 스냅숏은 읽기 전용 동안 ODBC (CRecordset) 스냅샷 드라이버와 ODBC 커서 라이브러리의 사용에 따라 업데이트할 수 있습니다. 커서 라이브러리를 사용 하는 경우 CRecordset 스냅숏은 업데이트할 수 있습니다. 데스크톱 드라이버 팩 3.0에서 Microsoft 드라이버가 사용 ODBC 커서 라이브러리 없이, 경우 CRecordset 스냅숏은 읽기 전용입니다. 다른 드라이버를 사용 하는 경우 드라이버의 설명서를 스냅샷 (STATIC_CURSORS)는 읽기 전용 참조 확인(&N)。
기술 노트 번호로 |nbsp; 카테고리별 기술 노트(&N)