반응형
[ 소스 다운로드]
각종 DB 관련 소스예제 (ADO,OLEDB,RDO)
[ 소스 다운로드 ]
MTS 지원을 위해 COM+ 체크한다. 모든 컴퍼넌트는 MTS 에서 관리할것이다.
오브젝트 추가하는 과정이다.
개체추가할때 옵션부분의 화면이다. 에러인터페이스를 쓰지위해 ISupportErrorInof 체크했다
1. 디버깅을위한 함수 객체 추가
위와같이 추가하게 되면 public ISupportErrorInfo 를 상속받게 된다.
class ATL_NO_VTABLE CTableStorage :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CTableStorage, &CLSID_TableStorage>,
public ISupportErrorInfo,
public IDispatchImpl<ITableStorage, &IID_ITableStorage, &LIBID_ASPComponentLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
BEGIN_COM_MAP(CTableStorage)
COM_INTERFACE_ENTRY(ITableStorage)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CTableStorage, &CLSID_TableStorage>,
public ISupportErrorInfo,
public IDispatchImpl<ITableStorage, &IID_ITableStorage, &LIBID_ASPComponentLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
BEGIN_COM_MAP(CTableStorage)
COM_INTERFACE_ENTRY(ITableStorage)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
다음과 같이 함수를 추가한다. 그럼 ASP 페이지에서 디버깅시에 상세디버깅정보가 출력되게 된다.
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
STDMETHODIMP CTableStorage::InterfaceSupportsErrorInfo(REFIID riid)
{
static const IID* arr[] =
{
&IID_ITableStorage
};
STDMETHODIMP CTableStorage::InterfaceSupportsErrorInfo(REFIID riid)
{
static const IID* arr[] =
{
&IID_ITableStorage
};
for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
if (InlineIsEqualGUID(*arr[i],riid))
return S_OK;
}
return S_FALSE;
}
{
if (InlineIsEqualGUID(*arr[i],riid))
return S_OK;
}
return S_FALSE;
}
2. 에러체크를 위한 소스 간소화 매크로추가
#define SAFE_CALL(expression) { HRESULT hr; if ( FAILED(hr=expression)) \
_com_issue_error(hr);}
_com_issue_error(hr);}
3. ADO 를 사용하기위한 사전셋팅추가
// ADO 타입라이브러리를 추가한다
#import "C:\Program Files\Common Files\System\ado\msado15.dll" \
no_namespace \
rename("EOF", "adoEOF") // EOF 와 이름충돌이있으므로 바꾼다
// C++ string 객체사용, IADORecordBinding 사용위한 추가
#include <string>
#include <icrsint.h>
#import "C:\Program Files\Common Files\System\ado\msado15.dll" \
no_namespace \
rename("EOF", "adoEOF") // EOF 와 이름충돌이있으므로 바꾼다
// C++ string 객체사용, IADORecordBinding 사용위한 추가
#include <string>
#include <icrsint.h>
반응형
댓글을 달아 주세요