다음을 통해 공유


CCommand 클래스

명령을 설정하고 실행하는 메서드를 제공합니다.

구문

template <class TAccessor = CNoAccessor,
   template <typename T> class TRowset = CRowset,
   class TMultiple = CNoMultipleResults>
class CCommand :
   public CAccessorRowset <TAccessor, TRowset>,
   public CCommandBase,
   public TMultiple

매개 변수

TAccessor
명령을 사용할 접근자 클래스(예: CDynamicParameterAccessor, CDynamicStringAccessor또는 CEnumeratorAccessor)의 형식입니다. 기본값은 CNoAccessor클래스가 매개 변수 또는 출력 열을 지원하지 않도록 지정하는 것입니다.

TRowset
명령을 사용할 행 집합 클래스(예: CArrayRowset 또는 CNoRowset)의 형식입니다. 기본값은 CRowset입니다.

TMultiple
여러 결과를 반환할 수 있는 OLE DB 명령을 사용하려면 CMultipleResults를 지정 합니다. 그렇지 않으면 CNoMultipleResults를 사용합니다. 자세한 내용은 IMultipleResults를 참조 하세요.

요구 사항

헤더: atldbcli.h

멤버

메서드

속성 설명
닫기 현재 명령을 닫습니다.
GetNextResult 여러 결과 집합을 사용할 때 다음 결과를 가져옵니다.
시작 명령을 실행하고 필요에 따라 바인딩합니다.

상속된 메서드

속성 설명
만들기 지정된 세션에 대한 새 명령을 만든 다음 명령 텍스트를 설정합니다.
CreateCommand 새 명령을 만듭니다.
GetParameterInfo 명령의 매개 변수, 해당 이름 및 해당 형식의 목록을 가져옵니다.
준비 현재 명령의 유효성을 검사하고 최적화합니다.
ReleaseCommand 필요한 경우 매개 변수 접근자를 해제한 다음 명령을 해제합니다.
SetParameterInfo 각 명령 매개 변수의 네이티브 형식을 지정합니다.
준비 취소 현재 명령 실행 계획을 삭제합니다.

설명

매개 변수 기반 작업을 수행하거나 명령을 실행해야 하는 경우 이 클래스를 사용합니다. 간단한 행 집합만 열어야 하는 경우 CTable을 대신 사용합니다.

사용 중인 접근자 클래스는 매개 변수 및 데이터를 바인딩하는 방법을 결정합니다.

해당 공급자가 저장 프로시저를 지원하지 않으므로 OLE DB Provider for Jet에서 저장 프로시저를 사용할 수 없습니다(쿼리 문자열에서는 상수만 허용됨).

CCommand::Close

명령과 연결된 접근자 행 집합을 해제합니다.

구문

void Close();

설명

명령은 행 집합, 결과 집합 접근자 및 매개 변수 접근자(선택 사항)를 사용합니다(테이블과 달리 매개 변수를 지원하지 않고 매개 변수 접근자가 필요하지 않음).

명령을 실행할 때 명령 후 ReleaseCommand와 ReleaseCommand를 모두 Close 호출해야 합니다.

동일한 명령을 반복적으로 실행하려면 호출Execute하기 전에 호출 Close 하여 각 결과 집합 접근자를 해제해야 합니다. 계열의 끝에서 매개 변수 접근자를 호출 ReleaseCommand하여 해제해야 합니다. 또 다른 일반적인 시나리오는 출력 매개 변수가 있는 저장 프로시저를 호출하는 것입니다. 많은 공급자(예: SQL Server용 OLE DB 공급자)에서 결과 집합 접근자를 닫을 때까지 출력 매개 변수 값에 액세스할 수 없습니다. 반환 Close 된 행 집합 및 결과 집합 접근자를 닫고 매개 변수 접근자를 닫아 출력 매개 변수 값을 검색할 수 있도록 합니다.

예시

다음 예제에서는 동일한 명령을 반복해서 실행할 때 CloseReleaseCommand을 호출할 수 있는 방법을 보여 줍니다.

void DoCCommandTest()
{
   HRESULT hr;

   hr = CoInitialize(NULL);

   CCustomer rs;           // Your CCommand-derived class
   rs.m_BillingID = 6611;  // Open billing ID 6611
   hr = rs.OpenAll();      // (Open also executes the command)
   hr = rs.MoveFirst();    // Move to the first row and print it

   _tprintf_s(_T("First name: %s, Last Name: %s, Customer ID: %d, Postal Code: %s\n"),
      rs.m_ContactFirstName, rs.m_L_Name, rs.m_CustomerID, rs.m_PostalCode);

   // Close the first command execution
   rs.Close();

   rs.m_BillingID = 3333;     // Open billing ID 3333 (a new customer)
   hr = rs.Open();            // (Open also executes the command)
   hr = rs.MoveFirst();       // Move to the first row and print it

   _tprintf_s(_T("First name: %s, Last Name: %s, Customer ID: %d, Postal Code: %s\n"),
      rs.m_ContactFirstName, rs.m_L_Name, rs.m_CustomerID, rs.m_PostalCode);

   // Close the second command execution;
   // Instead of the two following lines
   // you could simply call rs.CloseAll()
   // (a wizard-generated method):
   rs.Close();
   rs.ReleaseCommand();

   CoUninitialize();
}

CCommand::GetNextResult

사용할 수 있는 경우 다음 결과 집합을 가져옵니다.

구문

HRESULT GetNextResult(DBROWCOUNT* pulRowsAffected,
   bool bBind = true) throw();

매개 변수

pulRowsAffected
[in/out] 명령의 영향을 받는 행 수가 반환되는 메모리에 대한 포인터입니다.

bBind
[in] 실행 후 명령을 자동으로 바인딩할지 여부를 지정합니다. 기본값은 true명령이 자동으로 바인딩되도록 하는 것입니다. 수동으로 바인딩할 수 있도록 명령의 자동 바인딩을 방지하도록 false bBind를 설정합니다. (수동 바인딩은 OLAP 사용자에게 특히 중요합니다.)

Return Value

표준 HRESULT입니다.

설명

결과 집합이 이전에 페치된 경우 이 함수는 이전 결과 집합을 해제하고 열을 바인딩 해제합니다. bBindtrue새 열을 바인딩합니다.

템플릿 매개 변수 TMultipleCMultipleResults=을 설정하여 여러 결과를 지정한 경우에만 이 함수를 CCommand 호출해야 합니다.

CCommand::Open

명령을 실행하고 필요에 따라 바인딩합니다.

구문

HRESULT Open(const CSession& session,
   LPCWSTR wszCommand,
   DBPROPSET *pPropSet = NULL,
   DBROWCOUNT* pRowsAffected = NULL,
   REFGUID guidCommand = DBGUID_DEFAULT,
   bool bBind = true,
   ULONG ulPropSets = 0) throw();

HRESULT Open(const CSession& session,
   LPCSTR szCommand,
   DBPROPSET *pPropSet = NULL,
   DBROWCOUNT* pRowsAffected = NULL,
   REFGUID guidCommand = DBGUID_DEFAULT,
   bool bBind = true,
   ULONG ulPropSets = 0) throw();

HRESULT Open(const CSession& session,
   INT szCommand = NULL,
   DBPROPSET *pPropSet = NULL,
   DBROWCOUNT* pRowsAffected = NULL,
   REFGUID guidCommand = DBGUID_DEFAULT,
   bool bBind = true,
   ULONG ulPropSets = 0) throw();

HRESULT Open(DBPROPSET *pPropSet = NULL,
   DBROWCOUNT* pRowsAffected = NULL,
   bool bBind = true,
   ULONG ulPropSets = 0) throw();

매개 변수

session
[in] 명령을 실행할 세션입니다.

wszCommand
[in] 유니코드 문자열로 전달된 실행할 명령입니다. 사용할 CAccessor때 NULL일 수 있습니다. 이 경우 명령은 DEFINE_COMMAND 매크로에 전달된 값에서 검색됩니다. 자세한 내용은 OLE DB 프로그래머 참조에서 ICommand::Execute를 참조하세요.

szCommand
[in] 이 매개 변수가 ANSI 명령 문자열을 사용하는 것을 제외하고 wszCommand 와 동일합니다. 이 메서드의 네 번째 형식은 NULL 값을 사용할 수 있습니다. 자세한 내용은 이 항목의 뒷부분에 있는 "주의"를 참조하세요.

pPropSet
[in] 설정할 속성 및 값을 포함하는 DBPROPSET 구조의 배열에 대한 포인터입니다. Windows SDK의 OLE DB 프로그래머 참조에서 속성 집합 및 속성 그룹을 참조하세요.

pRowsAffected
[in/out] 명령의 영향을 받는 행 수가 반환되는 메모리에 대한 포인터입니다. *pRowsAffected가 NULL이면 행 수가 반환되지 않습니다. 그렇지 않으면 Open 다음 조건에 따라 *pRowsAffected를 설정합니다.

If 결과
cParamSets 요소가 pParams 1보다 큼 *pRowsAffected 는 실행에 지정된 모든 매개 변수 집합의 영향을 받는 총 행 수를 나타냅니다.
영향을 받는 행 수를 사용할 수 없습니다. *pRowsAffected 는 -1로 설정됩니다.
명령이 행을 업데이트, 삭제 또는 삽입하지 않습니다. *pRowsAffected 가 정의되지 않았습니다.

guidCommand
[in] 명령 텍스트를 구문 분석하는 데 사용할 공급자의 구문 및 일반 규칙을 지정하는 GUID입니다. 자세한 내용은 OLE DB 프로그래머 참조에서 ICommandText::GetCommandTextICommandText::SetCommandText를 참조하세요.

bBind
[in] 실행 후 명령을 자동으로 바인딩할지 여부를 지정합니다. 기본값은 true명령이 자동으로 바인딩되도록 하는 것입니다. 수동으로 바인딩할 수 있도록 명령의 자동 바인딩을 방지하도록 false bBind를 설정합니다. (수동 바인딩은 OLAP 사용자에게 특히 중요합니다.)

ulPropSets
[in] pPropSet 인수에 전달된 DBPROPSET 구조체의 입니다.

Return Value

표준 HRESULT입니다.

설명

세션의 처음 세 가지 형태 Open 는 명령을 만들고 필요에 따라 매개 변수를 바인딩하여 명령을 실행합니다.

첫 번째 형식 Open 은 유니코드 명령 문자열을 사용하며 기본값은 없습니다.

두 번째 형식 Open 은 ANSI 명령 문자열을 사용하고 기본값은 사용하지 않습니다(기존 ANSI 애플리케이션과의 이전 버전과의 호환성을 위해 제공됨).

세 번째 형식에서는 Open 기본값이 NULL인 형식 int 때문에 명령 문자열이 NULL이 될 수 있습니다. 호출 Open(session, NULL); 용으로 제공되거나 Open(session); NULL 형식 int이므로 제공됩니다. 이 버전은 매개 변수가 NULL이어야 하며 어 int 설션합니다.

명령을 이미 만들었으며 단일 준비 및 여러 실행을 수행하려는 경우의 네 번째 형식 Open 을 사용합니다.

참고 항목

Open 호출 Execute- 차례로 호출 GetNextResult합니다.

CCommand::Create

CCommand::CreateCommand를 호출하여 지정된 세션에 대한 명령을 만든 다음, ICommandText::SetCommandText를 호출하여 명령 텍스트를 지정합니다.

구문

HRESULT CCommandBase::Create(const CSession& session,
   LPCWSTR wszCommand,
   REFGUID guidCommand = DBGUID_DEFAULT) throw ();

HRESULT CCommandBase::Create(const CSession& session,
   LPCSTR szCommand,
   REFGUID guidCommand = DBGUID_DEFAULT) throw ();

매개 변수

session
[in] 명령을 만들 세션입니다.

wszCommand
[in] 명령 문자열의 유니코드 텍스트에 대한 포인터입니다.

szCommand
[in] 명령 문자열의 ANSI 텍스트에 대한 포인터입니다.

guidCommand
[in] 명령 텍스트를 구문 분석하는 데 사용할 공급자의 구문 및 일반 규칙을 지정하는 GUID입니다. 방언에 대한 설명은 OLE DB 프로그래머 참조에서 ICommandText::GetCommandText를 참조하세요.

Return Value

표준 HRESULT입니다.

설명

첫 번째 형식 Create 은 유니코드 명령 문자열을 사용합니다. 두 번째 형식 Create 은 ANSI 명령 문자열을 사용합니다(기존 ANSI 애플리케이션과의 이전 버전과의 호환성을 위해 제공됨).

CCommand::CreateCommand

새 명령을 만듭니다.

구문

HRESULT CCommandBase::CreateCommand(const CSession& session) throw ();

매개 변수

session
[in] CSession 새 명령과 연결할 개체입니다.

Return Value

표준 HRESULT입니다.

설명

이 메서드는 지정된 세션 개체를 사용하여 명령을 만듭니다.

CCommand::GetParameterInfo

명령의 매개 변수, 해당 이름 및 해당 형식의 목록을 가져옵니다.

구문

HRESULT CCommandBase::GetParameterInfo(DB_UPARAMS* pParams,
   DBPARAMINFO** ppParamInfo,
   OLECHAR** ppNamesBuffer) throw ();

매개 변수

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

Return Value

표준 HRESULT입니다.

CCommand::Prepare

현재 명령의 유효성을 검사하고 최적화합니다.

구문

HRESULT CCommandBase::Prepare(ULONG cExpectedRuns = 0) throw();

매개 변수

cExpectedRuns
[in] 명령을 실행할 것으로 예상되는 횟수입니다.

Return Value

표준 HRESULT입니다.

설명

이 메서드는 OLE DB 메서드 ICommandPrepare::P repare를 래핑합니다.

CCommand::ReleaseCommand

매개 변수 접근자를 해제한 다음 명령 자체를 해제합니다.

구문

void CCommandBase::ReleaseCommand() throw();

설명

ReleaseCommand 는 .와 함께 Close사용됩니다. 사용량 세부 정보는 닫기를 참조하세요.

CCommand::SetParameterInfo

각 명령 매개 변수의 네이티브 형식을 지정합니다.

구문

HRESULT CCommandBase::SetParameterInfo(DB_UPARAMS ulParams,
   const DBORDINAL* pOrdinals,
   const DBPARAMBINDINFO* pParamInfo) throw();

매개 변수

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

Return Value

표준 HRESULT입니다.

CCommand::Unprepare

현재 명령 실행 계획을 삭제합니다.

구문

HRESULT CCommandBase::Unprepare() throw();

Return Value

표준 HRESULT입니다.

설명

이 메서드는 OLE DB 메서드 ICommandPrepare::Unprepare를 래핑합니다.

참고 항목

OLE DB 소비자 템플릿
OLE DB 소비자 템플릿 참조