• 검색 결과가 없습니다.

제12장 데이터베이스 프로그래밍

N/A
N/A
Protected

Academic year: 2022

Share "제12장 데이터베이스 프로그래밍"

Copied!
21
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

제12장 데이터베이스 프로그래밍

12.1 데이터베이스 프로그램의 개요

실습 12-1. ODBC를 이용한 학생관리 프로그램 만들기

(2)

 데이터베이스 (Database)

많은 정보를 보관하는 창고

대용량의 정보를 보관하고 쉽게 찾아볼 수 있 음

 데이터베이스 관리 시스템(DBMS)

데이터베이스를 관리하는데 필요한 모든 일을 수행하는 시스템

대표적인 회사 : Oracle, Microsoft, Sybase

데이터베이스 프로그래밍

(3)

 데이터베이스 관리 언어

DBMS를 제어하기 위해서 DBMS에 명령을 내 릴 때 사용하는 언어

데이터베이스에 저장될 데이터의 구조 정의, 데 이터의 추가, 변경 및 삭제 명령을 비롯하여 여 러 가지 다양한 방법을 통한 데이터 검색 등 데 이터베이스 관리에 필요한 명령을 포함

대표적인 언어:SQL(Structured Query Language)

데이터베이스 프로그래밍

(4)

 데이터베이스

애플리케이션

사용자 인터페이스를 통해 데이터베이스 관리 언어를 생성해서 이를 DBMS에 전달함으로써, 데이터베이스를 제어한다.

사용자는 복잡한 데이터베이스의 내부 엔진 은 몰라도 데이터베이스를 구성하고 데이터를 입력, 수정, 삭제 조회하는 명령만 알면 데이터 베이스를 사용할 수 있다.

데이터베이스 프로그래밍

(5)

 데이터베이스 접근 방식

ODBC를 이용하는 방법

DAO를 이용하는 방법

OLE DB를 이용하는 방법

데이터베이스 프로그래밍

(6)

 ODBC(Open Database Connectivity)

데이터베이스 애플리케이션과 DBMS를 연결시키 표준적인 인터페이스를 제공

네트워크를 지원하며 다중 사용자가 데이터베이 스에 접속할 수 있다.

특정한 DBMS를 사용하는 사람이 OBDC 드라이 버를 통하여 다른 DBMS를 사용할 수 있게 한다.

여러분은 단지 ODBC드라이버 관리자를 호출하여 사용하려는 드라이버를 호출하면 된다.

드라이버는 SQL을 사용하여 DMBS와 교신을 한다.

데이터베이스 프로그래밍

(7)

 ODBC의 구조

데이터베이스 프로그래밍

(8)

 DAO(Data Access Object)

네트워크를 이용하여 데이터베이스에 접속할 수 없으며 한번에 한명의 사용자만이 데이터베 이스에 접근할 수 있다.

ODBC보다 빠르게 작동하며 ODBC에서 지원 하지 않는 기능을 몇 가지 가지고 있다.

데이터베이스 프로그래밍

(9)

 OLE DB(Object Linking and Embedding)

OLE DB는 마이크로소프트사가 개발한 API로, 통 일된 방식으로 저장된 여러 종류의 데이터에 접근 하기 위해 만들어졌다.

OLE DB는 개념적으로 소비자(consumer)와 제공 (provider)로 구분되어 있다.

소비자는 데이터에 접근해야 하는 응용 프로그램이 제공자는 인터페이스를 추가하는 소프트웨어 구 요소이다.

제공자는 복잡한 데이터베이스를 통하여 이러한 단 순한 데이터 저장소를 제공해준다.

데이터베이스 프로그래밍

(10)

 OLE DB를 이용한 학생관리 프로그램 만들기

이번 실습에서 만들게 될 학생관리 데이터베 이스 프로그램은 학생들의 여러 신상정보를 입력 받아 데이터베이스에 저장하고, 데이터 를 추가, 수정, 삭제, 검색하는 기능이 있는 프 로그램이다.

이번 실습을 통해 데이터베이스를 설계하고 생 성된 데이터베이스를 OLE DB로 등록하는 방 법과 데이터베이스에 데이터를 추가, 수정, 삭 제, 검색하는 방법 등을 배우게 된다.

실습 12-1

(11)

 실행 결과

실습 12-1

(12)

 프로그램 작성 순서

1)

데이터베이스 소스를 작성한다.

Microsoft Access 2007 프로그램을 사용하여 데이터베이스 소스를 작성한다.

2)

SDI 프로젝트를 생성한다.

[데이터베이스 지원] 단계에서 [헤더파일만]

선택하고 [클라이언트 형식] 항목은 OLE DB를 선택한다.

마지막 단계에서 [기본 클래스] 항목을 CFormView 클래스로 선택한다.

3)

폼에 컨트롤을 배치하고 속성을 설정한다.

실습 12-1

(13)

4)

컨트롤들을 멤버 변수에 연결한다.

5)

레코드 이동에 대한 메뉴와 툴바를 추가한다.

6)

데이터베이스와 연결을 할 클래스를 추가한 다.

7)

CDataSet클래스에 OLE DB로 데이터베이스 와 연동한다.

8)

클래스에 필요한 멤버 변수를 추가한다.

9)

프로그램 실행 시 데이터베이스를 연동해서 첫 번째 레코드를 출력한다.

실습 12-1

(14)

10)

레코드 이동 함수를 작성한다.

11)

폼에 레코드를 추가, 수정, 삭제, 검색 기능 을 하는 컨트롤을 추가한다.

12)

레코드 [추가]버튼에 대한 기능을 구현한다.

13)

레코드 [수정]버튼에 대한 기능을 구현한다.

14)

레코드 [삭제]버튼에 대한 기능을 구현한다.

15)

레코드 [검색]버튼에 대한 기능을 구현한다.

16)

프로그램을 실행시킨다.

실습 12-1

(15)

실습 12-1

실행결과

(16)

Access를 사용하여 매출 자료를 저장하기 위한 영업소, 품목, 매출 테이블을 가진 데이터베이 스를 작성하고, 년차별 해당 영업소의 매출내역 을 입력한다.

사용자가 입력한 기간 내의 영업소별, 품목별 매출내역을 조회하고 총 매출액을 계산하여 출 력하는 프로그램을 작성하여라.

연습문제 12-1OLE DB 데이터베이스 프로그램

(17)

 실행 결과

연습문제 12-1

매출액 조회 결과의 예

(18)

CFormView::OnInitialUpdate();

GetParentFrame()->RecalcLayout();

ResizeParentToFit();

m_listSales.InsertColumn(0, _T("영업소"), LVCF_TEXT|LVCFMT_CENTER, 60);

m_listSales.InsertColumn(1, _T("회계년도"), LVCF_TEXT|LVCFMT_CENTER, 60);

m_listSales.InsertColumn(2, _T("냉장고"), LVCF_TEXT|LVCFMT_CENTER, 60);

m_listSales.InsertColumn(3, _T("컴퓨터"), LVCF_TEXT|LVCFMT_CENTER, 60);

m_listSales.InsertColumn(4, _T("TV"), LVCF_TEXT|LVCFMT_CENTER, 60);

m_listSales.InsertItem(0, _T("서울"));

m_listSales.SetItem(0, 1, LVIF_TEXT, _T("2007"), -1, -1, -1, -1, -1);

m_listSales.SetItem(0, 2, LVIF_TEXT, _T("20"), -1, -1, -1, -1, -1);

m_listSales.SetItem(0, 3, LVIF_TEXT, _T("40"), -1, -1, -1, -1, -1);

m_listSales.SetItem(0, 4, LVIF_TEXT, _T("50"), -1, -1, -1, -1, -1);

m_listSales.InsertItem(0, _T("대전"));

m_listSales.SetItem(0, 1, LVIF_TEXT, _T("2008"), -1, -1, -1, -1, -1);

m_listSales.SetItem(0, 2, LVIF_TEXT, _T("15"), -1, -1, -1, -1, -1);

m_listSales.SetItem(0, 3, LVIF_TEXT, _T("30"), -1, -1, -1, -1, -1);

m_listSales.SetItem(0, 4, LVIF_TEXT, _T("25"), -1, -1, -1, -1, -1);

void CExercise12_1View::OnInitialUpdate()

(19)

m_listSales.InsertItem(0, _T("서울"));

m_listSales.SetItem(0, 1, LVIF_TEXT, _T("2008"), -1, -1, -1, -1, -1);

m_listSales.SetItem(0, 2, LVIF_TEXT, _T("23"), -1, -1, -1, -1, -1);

m_listSales.SetItem(0, 3, LVIF_TEXT, _T("45"), -1, -1, -1, -1, -1);

m_listSales.SetItem(0, 4, LVIF_TEXT, _T("52"), -1, -1, -1, -1, -1);

m_listSales.InsertItem(0, _T("서울"));

m_listSales.SetItem(0, 1, LVIF_TEXT, _T("2009"), -1, -1, -1, -1, -1);

m_listSales.SetItem(0, 2, LVIF_TEXT, _T("25"), -1, -1, -1, -1, -1);

m_listSales.SetItem(0, 3, LVIF_TEXT, _T("42"), -1, -1, -1, -1, -1);

m_listSales.SetItem(0, 4, LVIF_TEXT, _T("58"), -1, -1, -1, -1, -1);

m_cbOffice2.AddString(_T("모든 영업소"));

m_cbProduct.AddString(_T("모든 품목"));

void CExercise12_1View::OnInitialUpdate()

(20)

 {

 ClientToScreen(&point);

 OnContextMenu(this, point);

 }

void CExercise12_1View::OnRButtonUp(UINT /* nFlags

*/, CPoint point)

(21)

연습문제 12-1OLE DB 데이터베이스 프로그램 결과

참조

관련 문서