Visual C++ 데이터베이스 프로그래밍 - C++
Visual C++ 데이터베이스 프로그래밍
1. 데이터베이스 프로그래밍의 종류
1) DAO
마이크로소프트 제트(Jet) 데이터베이스 엔진을 이용하여 데이터베이스에 접근하기 위한 인터페이스로 MDB 파일만 지원합니다.
테이블의 생성 및 수정 삭제 등을 지원합니다.
MFC의 CDaoDatabase 클래스 등을 이용하여 프로그래밍 가능
2) ODBC
데이터베이스 관리 시스템(DBMS)에 관계없이 어떤 응용 프로그램에서나 모두 접근하여 사용할 수 있도록 하기 위하여 마이크로소프트에서 개발한 표준방법을 말하는데, 응용 프로그램과 DBMS 중간에 데이터베이스 처리 프로그램을 두어 이를 가능하게 한다.
프로그램 내에 ODBC 문장을 사용하면 MS-Access, dBase, DB2, Excel, Text 등 여러 종류의 데이터베이스를 액세스할 수 있다. 프로그램들이 데이터베이스의 독점적인 인터페이스에 대해 알지 못하더라도, 데이터베이스 접근이 가능하게 한다. SQL 요청을 받아서, 그것을 개개의 데이터베이스 시스템들이 이해할 수 있도록 변환하기 때문이다.
여러 종류의 데이터베이스를 함께 사용할 수 있고 기존에 사용하던 데이터베이스를 교체한다 하더라도 응용 시스템을 계속해서 그대로 사용할 수 있어 비용을 절감할 수 있는 등의 장점이 많다. 처음엔 마이크로소프트가 윈도우용 ODBC 제품을 공급했지만, 이제는 유닉스, OS/2, 매킨토시 등을 위한 버전도 있다.
MFC의 CDatabase 클래스 등을 이용하여 프로그래밍 가능
3) OLE DB
ODBC의 성공을 바탕으로 만든 새로운 공개 인터페이스
COM 기술을 이용한 새로운 데이터베이스 프로그래밍 방법
OLE DB 공급자를 통해 다양한 종류의 DBMS에 접근할 수 있으며, ODBC용 OLE DB 공급자를 사용하여 기존의 ODBC도 지원
4) ADO
OLE DB가 제공하는 기능을 좀더 쉽게 사용할 수 있도록 만든 COM 기술 기반의 프로그래밍 인터페이스
OLE DB에 기반하기 때문에 다양한 종류의 데이터베이스를 다룰 수 있고, 고성능을 냄. 언어 독립적이어서 베이직, C/C++, 자바 등 다양한 언어로 프로그래밍 가능
2. CRecordSet 클래스
데이터의 집합을 관리하기 위한 클래스
조회문을 전송하면 데이터베이스는 해당 조회문을 실행하고 그 결과를 반환하며 이 반환 값은 CRecordset 클래스의 멤버 함수를 통해 사용됩니다.
반환되는 RecordSet의 종류
Dynaset: 데이터의 동기화가 실시간으로 이루어 집니다.
Snapshot: 조회 당시 데이터의 정적인 View를 표현합니다.
멤버 함수
함수명 | 기능 |
m_strFilter | 필터링 하기 위한 문장을 지정, SQL문의 Where절에 해당 |
m_strSort | 정렬 하기 위한 문장을 지정, SQL문의 Order By절에 해당 |
GetODBCFieldCount() | 필드수를 반환 |
GetRecordCount() | 레코드 수를 반환 |
AddNew() | 레코드를 추가 |
Delete() | 레코드를 삭제 |
Edit() | 레코드를 수정 |
Update() | 변경된 내용을 데이터베이스에 반영 |
MoveFirst() | 첫 번째 레코드를 현재 레코드로 설정 |
MoveLast() | 마지막 레코드를 현재 레코드로 설정 |
MoveNext() | 다음 위치의 레코드를 현재 레코드로 설정 |
MovePrev() | 이전 위치의 레코드를 현재 레코드로 설정 |
Move() | 인자로 지정된 레코드 세트로 이동 |
IsBOF() | 현재 레코드가 첫 번째 레코드 바로 전 위치로 설정되었다면 TRUE를 리턴. 레코드가 전혀 없는 경우에도 TRUE를 리턴. |
IsEOF() | 현재 레코드가 마지막 레코드 바로 다음 위치로 설정되었다면 TRUE를 리턴. 레코드가 전혀 없는 경우에도 TRUE를 리턴. |
Requery() | 레코드 세트를 다시 지정 |
2. 예제 작성
프로그램 개요
<모든 자료 검색>
전체 입력 레코드가 나타나고
특정 레코드를 선택하고 대화상자의 <확인> 버튼을 누르거나 레코드의 일련번호를 두 번 누르면 선택된 레코드가 메인 화면에 나타남
이렇게 함으로써 특정 레코드의 삭제나 수정이 수월하게 이루어짐
<항목별 검색>
‘항목별 검색’ 대화상자가 나타남
검색하려는 특정 항목을 선택하고 검색 키워드 입력 후 <검색 확인>
검색 결과가 List 컨트롤에 나타남
<검색 확인>을 눌렀을 때 항목 선택이나 검색어의 입력 여부 체크
특정 레코드를 선택한 후 <닫기>를 누르거나 레코드를 두 번 누르면 메인 화면에 선택한 레코드가 나타남
<가입일 검색>
‘가입일 검색’ 대화상자
검색 날짜 기간 설정 > <검색 확인>
요청한 날짜의 레코드가 List 컨트롤에 나타남
특정 레코드를 두 번 누르거나 레코드 선택한 후 <닫기> 버튼을 누르면 메인 화면에 선택한 레코드가 나타남