MFC ODBC ODBC는 하나의 프로그래밍 인터페이스 (ODBC API)로 여러 종류의 DBMS에 접근할 수 있도록 만든것이다. 그림. ODBC 구조 - 응용 프로그램 ODBC API를 이용해서 작성한 응용 프로그램이다. 응용 프로그램은 ODBC API를 통해 드라이버 관리자와 통신한다. 데이터베이스에 연결할 때는 ODBC API를 사용하지만, 실제 데이터를 다룰때는 SQL을 사용한다. - 드라이버 관리자 응용 프로그램과 특정 DBMS 드라이버를 매개하는 역활을 한다. 드라이버 관리자의 주된 역활은 응용 프로그램이 요구한 데이터베이스에 접근할 수 있도록 ODBC 드라이버를 로드하고, 응용 프로그램과 동일한 API를 이용하여 드라이버의 함수를 호출하는 것이다. - 드라이버 ODBC API의 구현을 제공하..
MFC 데이타베이스 통합, 저장괸 유용한 데이터의 집합이다. 이러한 데이터베이스를 관리하는 소프트웨어 시스템을 DBMS(Database Management System) 라 부르는데 오라클, MS-SQL, DB2 등 다양한 종류의 DBMS가 사용되고 있다. 일반적으로 데이터베이스를 다룰때 DBMS는 중간에 매개 역활을 한다. DBMS 로 데이터베이스를 다루는 프로그래밍 인터페이스 1. 전용(Proprietary) 프로그래밍 인터페이스 각 DBMS 회사마다 제공하는 프로그래밍 인터페이스다. 속도나 효율면에서 우수하지만 DBMS에 종속적이기 때문에, 하나의 프로그램으로 다양한 종류의 DBMS에 접근하기 어렵다. 2. 공용(Universal) 프로그래밍 인터페이스 다양한 DBMS를 하나의 일관된 인터페이스로 ..
MFC 스레드 동기화 - 예외처리 CSingleLock, CMultiLock 클래스는 스레드 동기화 클래스를 편리하게 사용할 수 있도록 보조하는 역활 1. CSingleLock Lock()을 호출하여 뮤텍스 객체를 소유한 스레드가 실행 중 예외 상황이 발생하여 종료하게 되면, Unlock() 이 호출되지 못하는 문제가 발생한다. 1 2 3 4 5 6 7 CMutex g_mutex(...); MyThread() { g_mutex.Lock(); // 예외 상황 발생 g_mutex.Unlock(); } cs 이런 경우, 아래 코드와 같이 변수 lock 이 스택에 생성되므로 예외 상황이 발생하여 스레드가 종료하게 되면 자동으로 lock의 소멸자가 호출되고, 소멸자에서는 unlock()을 호출한다. 즉, Lock..
MFC 스레드 동기화 - 세마포, 세마포어 한정된 개수의 자우너을 여러 스레드가 접근하려고 할 때 이를 제어하는 동기화 객체 사용 가능한 리소스의 개수에 해당하는 리소스 카운트(Resource Count) 값을 유지하므로, 수행될 수 있느 스레드 개수를 조절할 수 있다. - 세마포를 사용한 스레드 동기화 방법 1. 세마포를 생성한다. 이때 사용 가능한 자원의 개수로 리소스 카운트를 초기화 한다. 2. 리소스를 사용할 스레드는 자신이 필요한 리소스 개수만큼 Lock()을 호출하며, Lock()이 성공할 때마다 리소스 카은트 값이 감소한다. 만약, 리소스 카운트가 0인 상태에서 Lock()을 호출하면 해당 스레드는 대기한다. 3. 리소스 사용을 마친 스레드는 자신이 사용한 리소스 개수만큼 Unlock()을 ..