How to use OLEDB using ATL

Download Report

Transcript How to use OLEDB using ATL

Technical seminar
How to use OLEDB
using ATL
이근호
[email protected]
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 템플릿 라이브러리
• 일반적으로 사용되는 여러 OLE DB 인터페
이스를 구현하는 클래스를 제공
• OLE DB 데이터베이스 기술을 사용하기 쉽
게 만들어 줌
• Wizard 지원
준비사항
• MSSQL2K
– Version 7도 가능!
• Visual Studio 6.0 + SP6
– DB관련 추가 패치 필요
• CMultipleResults 에서 memory leak 발생!
–
BUG: Memory Leak in ATL OLE DB Consumer Template Functions
http://support.microsoft.com/kb/271926
MSSQL
• DB생성
• 테이블 생성 - TblTest
필드명
타입
크기
seq
int
4
data
char
16
• 일반적인 DB 설계 방법과 동일
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)
접근 권한 설정
NULL부분이 쿼리
 세션을 열고 엑세서를 이용해서 Ccommand 를 생성
 쿼리에 해당하는 값을 반환!
Select Query
Code>
쿼리
끝 까지 읽어들임
결과출력
Result>
Insert Query
Code>
Insert는 결과가 없으므로 CNoRowset!
Ccommand 를 열때 쿼리 입력
Result>
Optimization
• Managed Area
– Connection Pool
– Memory Cache
• Unmanaged Area
–
–
–
–
Single Session
Stored Procedure
Property & Ccommand Management
Query Class
Additional
• Type Control
– 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/dvconChoosing
RightDataAccessTechnology.asp
• [한] OLEDB 프로그래밍
http://msdn.microsoft.com/library/kor/default.asp?url=/library/KOR/vccore/html/vcconOLEDBPr
ogramming.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에서 관련 정보를 검색해본 다음 디버깅을 하는
순서로 하는것을 권장합니다.
Q&A
Thank you
Copyrights (c) 2007 www.fiadot.com All rights reserved.
By Lee Gun-Ho, e-mail : fiadot at fiadot.com