How to use OLEDB using ATL Technical seminar How to use OLEDB using ATL 이근호 fiadot@gmail.com http://www.fiadot.com May 11,2007
차례 소개 OLEDB & ATL MSSQL 준비사항 단계별 코드와 결과 참고자료 Q&A
Step by Step MSSQL2000에 있는 DB의 테이블에서 레코드를 쓰고 읽어오는 전반적인 과정을 MFC에서 구현해보도록 한다.
OLEDB란? OLE DB is a set of COM-based interfaces that expose data from a variety of sources UDA(Universal Data Access) MS의 데이터 접근 전략 모든 유형의 데이터에 접근하기 위한 개방형 표준 데이터 엑세스 방법론 COM Interface Set 관계형DB + 비 관계형유 접근 가능!
UDA Architecture 접근방법 구성 특징 ODBC C API SQL base만 지원가능 OLEDB COM Everything (DB, FS, Mail, SpreadSheet, PM tool) ADO OLEDB Wrapper Easy to use
OLEDB + ATL ATL (Active Template Library)의 일부분인 OLE DB 템플릿 라이브러리 Wizard 지원
준비사항 MSSQL2K Visual Studio 6.0 + SP6 Version 7도 가능! DB관련 추가 패치 필요 CMultipleResults 에서 memory leak 발생! BUG: Memory Leak in ATL OLE DB Consumer Template Functions http://support.microsoft.com/kb/271926
MSSQL DB생성 테이블 생성 - TblTest 일반적인 DB 설계 방법과 동일 필드명 타입 크기 seq int 4 data char 16
MSSQL (Cont’d) Figure1. 테이블 구조
MSSQL (Cont’d) Figure2. 데이터 입력
Visual Studio Project
Visual Studio Project (Cont’d)
Code 추가된 헤더 실제 데이터 공간 컬럼과 데이터 바인딩 기본 실행 쿼리 데이터 초기화
Code (Cont’d) DB & Table Open Open DB Session
Code (Cont’d) 세션을 열고 엑세서를 이용해서 Ccommand 를 생성 쿼리에 해당하는 값을 반환! 접근 권한 설정 NULL부분이 쿼리 세션을 열고 엑세서를 이용해서 Ccommand 를 생성 쿼리에 해당하는 값을 반환!
Select Query Code> 쿼리 끝 까지 읽어들임 결과출력 Result>
Insert는 결과가 없으므로 CNoRowset! Insert Query Code> Insert는 결과가 없으므로 CNoRowset! Ccommand 를 열때 쿼리 입력 Result>
Optimization Managed Area Unmanaged Area Connection Pool Memory Cache Single Session Stored Procedure Property & Ccommand Management Query Class
Additional Type Control Multiple Accessor Stored Procedure INT64 BLOB Multiple Accessor Stored Procedure Argument, Return value MSSQL functions
MSDN 참고자료 [한] MS 데이터 액세스 기술 권장 사항http://msdn.microsoft.com/library/kor/default.asp?url=/library/KOR/vsent7/html/dvconChoosingRightDataAccessTechnology.asp [한] OLEDB 프로그래밍 http://msdn.microsoft.com/library/kor/default.asp?url=/library/KOR/vccore/html/vcconOLEDBProgramming.asp [영] OLE DB Programmer’s Guide http://msdn2.microsoft.com/en-us/library/ms713643.aspx [한] ZDNet Korea 모든것은 OLE로http://www.zdnet.co.kr/builder/dev/db/0,39031604,39131490,00.htm Visual Studio 6.0의 OLEDB ATL 관련 라이브러리는 다수의 memory leak과 버그가 존재하므로 정상적인 코드라고 생각하지만 문제가 발생하면 MSDN에서 관련 정보를 검색해본 다음 디버깅을 하는 순서로 하는것을 권장합니다.
Thank you Q&A Copyrights (c) 2007 www.fiadot.com All rights reserved. Copyrights (c) 2007 www.fiadot.com All rights reserved. By Lee Gun-Ho, e-mail : fiadot at fiadot.com