티스토리 뷰
MFC ODBC
ODBC는 하나의 프로그래밍 인터페이스 (ODBC API)로 여러 종류의 DBMS에 접근할 수 있도록 만든것이다.
그림. ODBC 구조
- 응용 프로그램
ODBC API를 이용해서 작성한 응용 프로그램이다.
응용 프로그램은 ODBC API를 통해 드라이버 관리자와 통신한다. 데이터베이스에 연결할 때는 ODBC API를 사용하지만, 실제 데이터를 다룰때는 SQL을 사용한다.
- 드라이버 관리자
응용 프로그램과 특정 DBMS 드라이버를 매개하는 역활을 한다.
드라이버 관리자의 주된 역활은 응용 프로그램이 요구한 데이터베이스에 접근할 수 있도록 ODBC 드라이버를 로드하고, 응용 프로그램과 동일한 API를 이용하여 드라이버의 함수를 호출하는 것이다.
- 드라이버
ODBC API의 구현을 제공하며 특정 DBMS에 종속적이다.
MS-SQL 과 같이 DBMS가 자체의 엔진을 제공하는 경우, 드라이버는 SQL문을 DBMS에게 전달하기만 한다. 그러나 엑셀 파일과 같이 자체 엔진을 제공하지 않는 경우에는 드라이버가 직접 SQL문을 처리한다.
- 데이터 원본 (Data Source)
ODBC에서 데이터베이스에 접근하기 위해 필요한 정보와 데이터베이스 자체를 총칭하는 용어다.
데이터 원본이 있어야만 ODBC를 이용해서 해당 데이터베이스에 접근할 수 있다.
<PC의 ODBC 구성요소 중 데이터 원본의 종류>
데이터 원본 종류 |
|
특성 |
기계 데이터 원본 |
사용자 DSN |
정보가 레지스트리에 저장, 현재 로그인한 사용자만 접근 |
기계 데이터 원본 |
시스템 DSN |
정보가 레지스트리에 저장, 모든 사용자가 접근 |
파일 데이터 원본 |
파일 DSN |
정보가 디스크 파일에 저장, 이 파일을 가진 사용자가 접근 |
DSN (Data Source Name)
- 데이터베이스 클래스
CDatabase 클래스
데이터베이스와의 연결을 나타내며, 이 객체를 통해 해당 데이터베이스를 조작할 수 있다. 데이터베이스에 접근 하려면 가장 먼저 CDatabase 객체를 만들어야 한다.
1
2
3
4
5 |
// 데이터베이스 객체 생성
CDatabase db;
db.OPenEx(...);
...
db.Cloase(); |
cs |
- 레코드셋 클래스
레코드셋 : 데이터 조잔 연산을 통해 얻은 레코드 집합
CRecordSet 클래스
레코드셋을 나타내며, 데이터 추가, 삭제, 갱신 등의 작업을 할 때 핵심적인 역활을 한다. 일반적으로 데이터베이스를 조작할 때는 CDatabase 객체를 먼저 생성하고, 이 객체를 CRecordSet 클래스 생성자에 넘겨주어 CRecordSet 객체를 만든다. 이후 CRecordSet 클래스가 제공하는 다양한 멤버 함수를 통해 데이터를 조작하게 된다.
1
2
3
4
5
6
7
8
9
10
11 |
// 데이버베이스 객체 생성
CDatabase db;
db.OPenEx(...);
// 레코드셋 객체 생성
CRecordSet rs(&db)
rs.Open();
// 데이터 추가, 삭세, 갱신, 검색...
//종료
rs.Close();
db.Cloase(); |
cs |
- 예외 처리 클래스
CDBExeception 클래스는 데이터베이스를 조작할 때 발생하는 오류를 나타낸다.
1
2
3
4
5
6
7 |
try {
// 데이터베이스 조작
}
catch (CDBException* e) {
e->ReposrtError();
e->Delete();
} |
cs |