다음을 통해 공유


IRowsetUpdateImpl 클래스

IRowsetUpdate 인터페이스의 OLE DB 템플릿 구현입니다.

구문

template <
   class T,
   class Storage,
   class UpdateArray = CAtlArray<Storage>,
   class RowClass = CSimpleRow,
   class MapClass = CAtlMap <RowClass::KeyType, RowClass*>
>

class IRowsetUpdateImpl : public IRowsetChangeImpl<
   T,
   Storage,
   IRowsetUpdate,
   RowClass,
   MapClass>

매개 변수

T
에서 파생된 클래스입니다 IRowsetUpdateImpl.

스토리지
사용자 레코드입니다.

UpdateArray
행 집합을 업데이트하기 위해 캐시된 데이터를 포함하는 배열입니다.

RowClass
에 대한 스토리지 단위입니다 HROW.

MapClass
공급자가 보유한 모든 행 핸들의 스토리지 단위입니다.

요구 사항

헤더: atldb.h

멤버

인터페이스 메서드(IRowsetChange와 함께 사용됨)

속성 설명
SetData 하나 이상의 열에서 데이터 값을 설정합니다.

인터페이스 메서드(IRowsetUpdate와 함께 사용)

속성 설명
GetOriginalData 보류 중인 변경 내용을 무시하고 데이터 원본에 가장 최근에 전송되거나 데이터 원본에서 가져온 데이터를 가져옵니다.
GetPendingRows 보류 중인 변경 내용이 있는 행 목록을 반환합니다.
GetRowStatus 지정된 행의 상태를 반환합니다.
취소 마지막 가져오기 또는 업데이트 이후 행에 대한 변경 내용을 실행 취소합니다.
Update 마지막 가져오기 또는 업데이트 이후 행에 변경된 내용을 전송합니다.

구현 메서드(콜백)

속성 설명
IsUpdateAllowed 업데이트를 허용하기 전에 보안, 무결성 등을 확인하는 데 사용됩니다.

데이터 멤버

속성 설명
m_mapCachedData 지연된 작업에 대한 원래 데이터를 포함합니다.

설명

여기에 설명된 모든 항목도 여기에 적용되므로 먼저 IRowsetChange에 대한 설명서를 읽고 이해해야 합니다. 또한 데이터 설정에 대한 OLE DB 프로그래머 참조 의 6장을 읽어야 합니다.

IRowsetUpdateImpl는 소비자가 데이터 원본으로 변경한 내용의 전송을 지연하고 전송 전에 변경 내용을 IRowsetChange 실행 취소할 수 있도록 하는 OLE DB IRowsetUpdate 인터페이스를 구현합니다.

Important

공급자를 구현하기 전에 다음 설명서를 읽는 것이 좋습니다.

IRowsetUpdateImpl::SetData

하나 이상의 열에서 데이터 값을 설정합니다.

구문

STDMETHOD (SetData )(HROW hRow,
   HACCESSOR hAccessor,
   void* pSrcData);

매개 변수

OLE DB 프로그래머 참조에서 IRowsetChange::SetData를 참조하세요.

설명

이 메서드는 IRowsetChangeImpl::SetData 메서드를 재정의하지만 작업의 즉각적인 처리 또는 지연 처리를 허용하도록 원래 데이터의 캐싱을 포함합니다.

IRowsetUpdateImpl::GetOriginalData

보류 중인 변경 내용을 무시하고 데이터 원본에 가장 최근에 전송되거나 데이터 원본에서 가져온 데이터를 가져옵니다.

구문

STDMETHOD (GetOriginalData )(HROW hRow,
   HACCESSOR hAccessor,
   void* pData);

매개 변수

OLE DB 프로그래머 참조에서 IRowsetUpdate::GetOriginalData를 참조하세요.

IRowsetUpdateImpl::GetPendingRows

보류 중인 변경 내용이 있는 행 목록을 반환합니다.

구문

STDMETHOD (GetPendingRows )(HCHAPTER /* hReserved */,
   DBPENDINGSTATUS dwRowStatus,
   DBCOUNTITEM* pcPendingRows,
   HROW** prgPendingRows,
   DBPENDINGSTATUS** prgPendingStatus);

매개 변수

hReserved
[in] IRowsetUpdate::GetPendingRows의 hChapter 매개 변수에 해당합니다.

다른 매개 변수는 OLE DB 프로그래머 참조에서 IRowsetUpdate::GetPendingRows를 참조하세요.

설명

자세한 내용은 OLE DB 프로그래머 참조에서 IRowsetUpdate::GetPendingRows를 참조하세요.

IRowsetUpdateImpl::GetRowStatus

지정된 행의 상태를 반환합니다.

구문

STDMETHOD (GetRowStatus )(HCHAPTER /* hReserved */,
   DBCOUNTITEM cRows,
   const HROW rghRows[],
   DBPENDINGSTATUS rgPendingStatus[]);

매개 변수

hReserved
[in] IRowsetUpdate::GetRowStatushChapter 매개 변수에 해당합니다.

다른 매개 변수는 OLE DB 프로그래머 참조에서 IRowsetUpdate::GetRowStatus를 참조하세요.

IRowsetUpdateImpl::Undo

마지막 가져오기 또는 업데이트 이후 행에 대한 변경 내용을 실행 취소합니다.

구문

STDMETHOD (Undo )(HCHAPTER /* hReserved */,
   DBCOUNTITEM cRows,
   const HROW rghRows[ ],
   DBCOUNTITEM* pcRowsUndone,
   HROW** prgRowsUndone,
   DBROWSTATUS** prgRowStatus);

매개 변수

hReserved
[in] IRowsetUpdate::UndohChapter 매개 변수에 해당합니다.

pcRowsUndone
[out] IRowsetUpdate::UndopcRows 매개 변수에 해당합니다.

prgRowsUndone
[in] IRowsetUpdate::UndoprgRows 매개 변수에 해당합니다.

다른 매개 변수는 OLE DB 프로그래머 참조에서 IRowsetUpdate::Undo를 참조하세요.

IRowsetUpdateImpl::Update

마지막 가져오기 또는 업데이트 이후 행에 변경된 내용을 전송합니다.

구문

STDMETHOD (Update )(HCHAPTER /* hReserved */,
   DBCOUNTITEM cRows,
   const HROW rghRows[],
   DBCOUNTITEM* pcRows,
   HROW** prgRows,
   DBROWSTATUS** prgRowStatus);

매개 변수

hReserved
[in] IRowsetUpdate::Update의 hChapter 매개 변수에 해당합니다.

다른 매개 변수는 OLE DB 프로그래머 참조에서 IRowsetUpdate::Update를 참조하세요.

설명

변경 내용은 IRowsetChangeImpl::FlushData를 호출하여 전송됩니다. 변경 내용을 적용하려면 소비자가 CRowset::Update를 호출해야 합니다. OLE DB 프로그래머 참조의 행 상태에 설명된 대로 prgRowstatus적절한 값으로 설정합니다.

IRowsetUpdateImpl::IsUpdateAllowed

업데이트 전에 보안, 무결성 등을 확인하려면 이 메서드를 재정의합니다.

구문

HRESULT IsUpdateAllowed(DBPENDINGSTATUS /* [in] */ /* status */,
   HROW /* [in] */ /* hRowUpdate */,
   DBROWSTATUS* /* [out] */ /* pRowStatus */);

매개 변수

status
[in] 행에서 보류 중인 작업의 상태입니다.

hRowUpdate
[in] 사용자가 업데이트하려는 행에 대한 핸들입니다.

pRowStatus
[out] 사용자에게 반환된 상태입니다.

설명

업데이트를 허용해야 한다고 판단되면 S_OK 반환합니다. 그렇지 않으면 E_FAIL 반환합니다. 업데이트를 허용하는 경우 IRowsetUpdateImpl::Update에서 적절한 행 상태로 설정 DBROWSTATUS 해야 합니다.

IRowsetUpdateImpl::m_mapCachedData

지연된 작업에 대한 원래 데이터를 포함하는 맵입니다.

구문

CAtlMap<
   HROW hRow,
   Storage* pData
>
m_mapCachedData;

매개 변수

hRow
데이터의 행을 처리합니다.

pData
캐시할 데이터에 대한 포인터입니다. 데이터는 Storage 형식(사용자 레코드 클래스)입니다. IRowsetUpdateImpl 클래스의 Storage 템플릿 인수를 참조하세요.

참고 항목

OLE DB 공급자 템플릿
OLE DB 공급자 템플릿 구조
업데이트 가능 공급자 만들기