하나의 세션으로 여러 개의 레코드셋을 사용하기 > MFC Tip

본문 바로가기
사이트 내 전체검색

MFC Tip

하나의 세션으로 여러 개의 레코드셋을 사용하기

페이지 정보

profile_image
작성자 이즈
댓글 0건 조회 823회 작성일 06-12-28 04:35

본문

ODBC 클래스를 사용하면서 하나의 DSN에 대해 하나의 세션만을 사용해 여러 개의 레코드셋을 사용하고 싶습니다. 그 방법은 알고 싶습니다.

레코드셋 객체를 만들 때 어떤 CDatabase 객체를 사용하느냐에 따라 달라집니다. 레코드셋 객체의 생성자로 기존의 CDatabase 객체를 주면 이를 이용해 레코드셋을 오픈합니다. 즉, 세션이 별도로 열리지 않는 것입니다. 레코드셋 객체의 생성자로 NULL을 주면 레코드셋에서 알아서 CDatabase 객체를 하나 만들어 사용합니다. 즉, 세션이 별도로 열리는 것입니다.

그런데 MFC 프로그램의 경우 모든 레코드셋을 후자의 방법으로 만들어 놓기 때문에 (물론 수정은 가능합니다) 레코드셋마다 세션이 열리게 됩니다. 예를 들어 하나의 레코드셋을 만들어 이를 다른 클래스의 멤버 변수 형태로 사용하면 다음과 같은 형식이 됩니다.

public:
CTifTestSet m_tifTestSet;

이 경우 레코드셋의 생성자로 아무 것도 넘어가지 않기 때문에 레코드셋에서 별도의 CDatabase 객체를 만들게 되고 따라서 세션이 하나 더 생성됩니다. 이를 해결하려면 먼저 전역 CDatabase 객체를 하나 멤버 변수로 선언해두고 각 레코드셋 변수도 그냥 변수가 아닌 포인터 변수로 선언해야 합니다.

public:
CDatabase m_globalDB;
CTifTestSet *m_pTifTestSet;

이렇게 한 다음 레코드셋을 오픈한 필요가 있을 때 다음과 같은 절차를 거칩니다.

m_pTifTestSet = new CTifTestSet(&m_globalDB);

다른 레코드셋을 오픈할 때도 위와 같은 CDatabase 객체를 사용하면 세션을 하나만 사용할 수 있습니다. 물론 동적으로 할당하기 때문에 나중에 delete하는 것을 잊으면 안 됩니다.

댓글목록

등록된 댓글이 없습니다.

Total 172건 4 페이지

검색

회원로그인

회원가입

사이트 정보

컴퓨터 정보,윈도우즈,리눅스,포토샵,3ds
맥스,프로그래밍 강좌팁

접속자집계

오늘
661
어제
569
최대
5,287
전체
636,936
Copyright © www.qdata.co.kr All rights reserved.