CCommand 클래스CCommand Class

명령을 설정 하 고 실행 하는 메서드를 제공 합니다.Provides methods to set and execute a command.

구문Syntax

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

매개 변수Parameters

TAccessorTAccessor
명령에서 사용할 접근자 클래스의 형식 (예: CDynamicParameterAccessor , CDynamicStringAccessor 또는 CEnumeratorAccessor )입니다.The type of accessor class (such as CDynamicParameterAccessor, CDynamicStringAccessor, or CEnumeratorAccessor) that you want the command to use. 기본값은 CNoAccessor 클래스가 매개 변수 또는 출력 열을 지원 하지 않도록 지정 하는입니다.The default is CNoAccessor, which specifies that the class not support parameters or output columns.

TRowsetTRowset
CArrayRowset명령에서 사용 하려는 행 집합 클래스의 유형 (예: 또는 CNoRowset )입니다.The type of rowset class (such as CArrayRowset or CNoRowset) that you want the command to use. 기본값은 CRowset입니다.The default is CRowset.

TMultipleTMultiple
여러 결과를 반환할 수 있는 OLE DB 명령을 사용 하려면 CMultipleResults를 지정 합니다.To use an OLE DB command that can return multiple results, specify CMultipleResults. 그렇지 않으면 CNoMultipleResults를 사용 합니다.Otherwise, use CNoMultipleResults. 자세한 내용은 IMultipleResults를 참조 하세요.For details, see IMultipleResults.

요구 사항Requirements

헤더: atldbcli.hHeader: atldbcli.h

멤버Members

메서드Methods

속성Name 설명Description
닫기Close 현재 명령을 닫습니다.Closes the current command.
GetNextResultGetNextResult 여러 결과 집합을 사용 하는 경우 다음 결과를 페치합니다.Fetches the next result when using multiple result sets.
열기Open 를 실행 하 고 선택적으로 명령을 바인딩합니다.Executes and optionally binds the command.

상속된 메서드Inherited Methods

NameName DescriptionDescription
만들기Create 지정 된 세션에 대 한 새 명령을 만든 다음 명령 텍스트를 설정 합니다.Creates a new command for the specified session, then sets the command text.
CreateCommandCreateCommand 새 명령을 만듭니다.Creates a new command.
GetParameterInfoGetParameterInfo 명령의 매개 변수, 이름 및 형식에 대 한 목록을 가져옵니다.Gets a list of the command's parameters, their names, and their types.
준비해Prepare 현재 명령의 유효성을 검사 하 고 최적화 합니다.Validates and optimizes the current command.
ReleaseCommandReleaseCommand 필요한 경우 매개 변수 접근자를 해제 한 다음 명령을 해제 합니다.Releases the parameter accessor if necessary, then releases the command.
SetParameterInfoSetParameterInfo 각 명령 매개 변수의 네이티브 형식을 지정 합니다.Specifies the native type of each command parameter.
UnprepareUnprepare 현재 명령 실행 계획을 삭제 합니다.Discards the current command execution plan.

설명Remarks

매개 변수 기반 작업을 수행 하거나 명령을 실행 해야 하는 경우이 클래스를 사용 합니다.Use this class when you need to perform a parameter-based operation or execute a command. 단순히 단순 행 집합을 열어야 하는 경우에는 CTable 를 대신 사용 합니다.If you merely need to open a simple rowset, use CTable instead.

사용 중인 접근자 클래스는 매개 변수 및 데이터를 바인딩하는 방법을 결정 합니다.The accessor class you are using determines the method of binding parameters and data.

저장 OLE DB 프로시저는 Jet의 경우에는 저장 프로시저를 지원 하지 않으므로 해당 공급자는 저장 프로시저를 사용할 수 없습니다. 쿼리 문자열에는 상수만 사용할 수 있습니다.Note that you cannot use stored procedures with the OLE DB Provider for Jet because that provider does not support stored procedures (only constants are allowed in query strings).

CCommand:: CloseCCommand::Close

명령과 연결 된 접근자 행 집합을 해제 합니다.Releases the accessor rowset associated with the command.

구문Syntax

void Close();

설명Remarks

명령은 행 집합, 결과 집합 접근자 및 (선택 사항) 매개 변수 접근자를 사용 합니다. 테이블은 매개 변수를 지원 하지 않으며 매개 변수 접근자가 필요 하지 않습니다.A command uses a rowset, result set accessor, and (optionally) a parameter accessor (unlike tables, which do not support parameters and do not need a parameter accessor).

명령을 실행 하는 경우 Close 명령 후와 ReleaseCommand 를 모두 호출 해야 합니다.When you execute a command, you should call both Close and ReleaseCommand after the command.

동일한 명령을 반복적으로 실행 하려면를 호출 하기 전에를 호출 하 여 각 결과 집합 접근자를 해제 해야 Close Execute 합니다.When you want to execute the same command repeatedly, you should release each result set accessor by calling Close before calling Execute. 시리즈의 끝에서를 호출 하 여 매개 변수 접근자를 해제 해야 합니다 ReleaseCommand .At the end of the series, you should release the parameter accessor by calling ReleaseCommand. 또 다른 일반적인 시나리오는 출력 매개 변수가 있는 저장 프로시저를 호출 하는 것입니다.Another common scenario is calling a stored procedure that has output parameters. 많은 공급자 (예: SQL Server에 대 한 OLE DB 공급자)에서는 결과 집합 접근자를 닫을 때까지 출력 매개 변수 값에 액세스할 수 없습니다.On many providers (such as the OLE DB provider for SQL Server) the output parameter values will not be accessible until you close the result set accessor. Close를 호출 하 여 반환 된 행 집합 및 결과 집합 접근자를 닫을 수 있지만 매개 변수 접근자는 닫지 않으므로 출력 매개 변수 값을 검색할 수 있습니다.Call Close to close the returned rowset and result set accessor, but not the parameter accessor, thus allowing you to retrieve the output parameter values.

예제Example

다음 예제에서는 동일한 명령을 반복해서 실행할 때 CloseReleaseCommand을 호출할 수 있는 방법을 보여 줍니다.The following example shows how you can call Close and ReleaseCommand when you execute the same command repeatedly.

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:: GetNextResultCCommand::GetNextResult

사용할 수 있는 경우 다음 결과 집합을 페치합니다.Fetches the next result set if one is available.

구문Syntax

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

매개 변수Parameters

pulRowsAffectedpulRowsAffected
[in/out] 명령의 영향을 받는 행 수가 반환 되는 메모리에 대 한 포인터입니다.[in/out] A pointer to memory where the count of rows affected by a command is returned.

bBindbBind
진행 명령을 실행 한 후 자동으로 바인딩할 지 여부를 지정 합니다.[in] Specifies whether to bind the command automatically after being executed. 기본값은 이며 true ,이로 인해 명령이 자동으로 바인딩됩니다.The default is true, which causes the command to be bound automatically. Bbind 를로 설정 하면 false 수동으로 바인딩할 수 있도록 명령의 자동 바인딩이 방지 됩니다.Setting bBind to false prevents the automatic binding of the command so that you can bind manually. (수동 바인딩은 OLAP 사용자에 게 특히 관심이 있습니다.)(Manual binding is of particular interest to OLAP users.)

반환 값Return Value

표준 HRESULT입니다.A standard HRESULT.

설명Remarks

이전에 결과 집합을 인출 한 경우이 함수는 이전 결과 집합을 해제 하 고 열을 바인딩 해제 합니다.If a result set has been previously fetched, this function releases the previous result set and unbinds the columns. Bbind 가 인 경우 true 새 열을 바인딩합니다.If bBind is true, it binds the new columns.

CCommand템플릿 매개 변수 tmultiple을 설정 하 여 여러 결과를 지정한 경우에만이 함수를 호출 해야 합니다 = CMultipleResults .You should call this function only if you have specified multiple results by setting the CCommand template parameter TMultiple=CMultipleResults.

CCommand:: OpenCCommand::Open

를 실행 하 고 선택적으로 명령을 바인딩합니다.Executes and optionally binds the command.

구문Syntax

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();

매개 변수Parameters

세션별session
진행 명령을 실행할 세션입니다.[in] The session in which to execute the command.

wszCommandwszCommand
진행 유니코드 문자열로 전달 되는 실행할 명령입니다.[in] The command to execute, passed as a Unicode string. 를 사용 하는 경우 NULL 일 수 있습니다 CAccessor .이 경우 DEFINE_COMMAND 매크로에 전달 된 값에서 명령이 검색 됩니다.Can be NULL when using CAccessor, in which case the command will be retrieved from the value passed to the DEFINE_COMMAND macro. 자세한 내용은 OLE DB 프로그래머 참조 에서 ICommand:: Execute 를 참조 하세요.See ICommand::Execute in the OLE DB Programmer's Reference for details.

szCommandszCommand
진행 이 매개 변수가 ANSI 명령 문자열을 사용 한다는 점을 제외 하 고 wszCommand 와 동일 합니다.[in] Same as wszCommand except that this parameter takes an ANSI command string. 이 메서드의 네 번째 형태는 NULL 값을 사용할 수 있습니다.The fourth form of this method can take a NULL value. 자세한 내용은이 항목의 뒷부분에 나오는 "주의"를 참조 하십시오.See "Remarks" later in this topic for details.

pPropSetpPropSet
진행 설정할 속성 및 값을 포함 하는 DBPROPSET 구조체의 배열에 대 한 포인터입니다.[in] A pointer to an array of DBPROPSET structures containing properties and values to be set. Windows SDK에서 OLE DB 프로그래머 참조속성 집합 및 속성 그룹 을 참조 하세요.See Property Sets and Property Groups in the OLE DB Programmer's Reference in the Windows SDK.

영향을 받는 prowspRowsAffected
[in/out] 명령의 영향을 받는 행 수가 반환 되는 메모리에 대 한 포인터입니다.[in/out] A pointer to memory where the count of rows affected by a command is returned. * * 영향을 받는 PROWSAFFECTED* 가 NULL 이면 행 개수가 반환 되지 않습니다.If *pRowsAffected is NULL, no row count is returned. 그렇지 않으면 Open 다음 조건에 따라 적용 되는 * * prowsaffected* 을 설정 합니다.Otherwise, Open sets *pRowsAffected according to the following conditions:

조건If 결과Then
cParamSets의 요소가 pParams 1 보다 큽니다.The cParamSets element of pParams is greater than 1 * * 영향 받는 영향을 받는* 모든 매개 변수 집합의 영향을 받는 행의 총 수를 나타냅니다.*pRowsAffected represents the total number of rows affected by all of the parameter sets specified in the execution.
영향을 받는 행 수를 사용할 수 없습니다.The number of affected rows is not available * * 영향을 받는 prowsaffected* -1로 설정 됩니다.*pRowsAffected is set to -1.
이 명령은 행을 업데이트, 삭제 또는 삽입 하지 않습니다.The command does not update, delete, or insert rows * * 영향을 받는 prowsaffected* 정의 되지 않습니다.*pRowsAffected is undefined.

guidCommandguidCommand
진행 명령 텍스트를 구문 분석 하는 데 사용할 공급자의 구문과 일반 규칙을 지정 하는 GUID입니다.[in] A GUID that specifies the syntax and general rules for the provider to use in parsing the command text. 자세한 내용은 OLE DB 프로그래머 참조 에서 ICommandText:: GetcommandtextICommandText:: setcommandtext 를 참조 하세요.See ICommandText::GetCommandText and ICommandText::SetCommandText in the OLE DB Programmer's Reference for details.

bBindbBind
진행 명령을 실행 한 후 자동으로 바인딩할 지 여부를 지정 합니다.[in] Specifies whether to bind the command automatically after being executed. 기본값은 이며 true ,이로 인해 명령이 자동으로 바인딩됩니다.The default is true, which causes the command to be bound automatically. Bbind 를로 설정 하면 false 수동으로 바인딩할 수 있도록 명령의 자동 바인딩이 방지 됩니다.Setting bBind to false prevents the automatic binding of the command so that you can bind manually. (수동 바인딩은 OLAP 사용자에 게 특히 관심이 있습니다.)(Manual binding is of particular interest to OLAP users.)

ulPropSetsulPropSets
진행 PPropSet 인수에 전달 된 DBPROPSET 구조체의 수입니다.[in] The number of DBPROPSET structures passed in the pPropSet argument.

반환 값Return Value

표준 HRESULT입니다.A standard HRESULT.

설명Remarks

의 처음 세 가지 형태는 세션을 사용 하 고, Open 명령을 만들고, 필요에 따라 매개 변수를 바인딩하는 명령을 실행 하는 것입니다.The first three forms of Open take a session, create a command, and execute the command, binding any parameters as necessary.

의 첫 번째 형태는 Open 유니코드 명령 문자열을 사용 하며 기본값은 없습니다.The first form of Open takes a Unicode command string and has no default value.

의 두 번째 형식은 Open ansi 명령 문자열을 사용 하 고 기본값은 사용 하지 않습니다 (기존 ANSI 응용 프로그램과의 호환성을 위해 제공 됨).The second form of Open takes an ANSI command string and no default value (provided for backward compatibility with existing ANSI applications).

의 세 번째 형식은 Open 형식 때문에 명령 문자열이 null이 될 수 있도록 합니다 int . 기본값은 null입니다.The third form of Open allows the command string to be NULL, because of type int with a default value of NULL. Open(session, NULL); Open(session); NULL은 형식 이므로 또는를 호출 하기 위해 제공 됩니다 int .It is provided for calling Open(session, NULL); or Open(session); because NULL is of type int. 이 버전에는 매개 변수가 NULL 임을 어설션하는 및가 필요 int 합니다.This version requires and asserts that the int parameter be NULL.

Open명령을 이미 만들었고 단일 준비 및 다중 실행을 수행 하려는 경우의 네 번째 형태를 사용 합니다.Use the fourth form of Open when you have already created a command and you want to perform a single Prepare and multiple executions.

참고

Open``Execute는를 호출 하 여을 호출 GetNextResult 합니다.Open calls Execute, which in turn calls GetNextResult.

CCommand:: CreateCCommand::Create

CCommand:: CreateCommand 를 호출 하 여 지정 된 세션에 대 한 명령을 만든 다음 ICommandText:: setcommandtext 를 호출 하 여 명령 텍스트를 지정 합니다.Calls CCommand::CreateCommand to create a command for the specified session, then calls ICommandText::SetCommandText to specify the command text.

구문Syntax

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 ();

매개 변수Parameters

세션별session
진행 명령을 만들 세션입니다.[in] A session on which to create the command.

wszCommandwszCommand
진행 명령 문자열의 유니코드 텍스트에 대 한 포인터입니다.[in] A pointer to the Unicode text of the command string.

szCommandszCommand
진행 명령 문자열의 ANSI 텍스트에 대 한 포인터입니다.[in] A pointer to the ANSI text of the command string.

guidCommandguidCommand
진행 명령 텍스트를 구문 분석 하는 데 사용할 공급자의 구문과 일반 규칙을 지정 하는 GUID입니다.[in] A GUID that specifies the syntax and general rules for the provider to use in parsing the command text. 언어에 대 한 설명은 OLE DB 프로그래머 참조에서 ICommandText:: getcommandtext 를 참조 하세요.For a description of dialects, see ICommandText::GetCommandText in the OLE DB Programmer's Reference.

반환 값Return Value

표준 HRESULT입니다.A standard HRESULT.

설명Remarks

의 첫 번째 형태는 Create 유니코드 명령 문자열을 사용 합니다.The first form of Create takes a Unicode command string. 의 두 번째 형태는 Create ansi 명령 문자열 (기존 ansi 응용 프로그램과의 호환성을 위해 제공 됨)을 사용 합니다.The second form of Create takes an ANSI command string (provided for backward compatibility with existing ANSI applications).

CCommand:: CreateCommandCCommand::CreateCommand

새 명령을 만듭니다.Creates a new command.

구문Syntax

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

매개 변수Parameters

세션별session
진행 CSession 새 명령과 연결 될 개체입니다.[in] A CSession object to be associated with the new command.

반환 값Return Value

표준 HRESULT입니다.A standard HRESULT.

설명Remarks

이 메서드는 지정 된 세션 개체를 사용 하 여 명령을 만듭니다.This method creates a command using the specified session object.

CCommand:: GetParameterInfoCCommand::GetParameterInfo

명령의 매개 변수, 이름 및 형식에 대 한 목록을 가져옵니다.Gets a list of the command's parameters, their names, and their types.

구문Syntax

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

매개 변수Parameters

OLE DB 프로그래머 참조에서 ICommandWithParameters:: GetParameterInfo 를 참조 하세요.See ICommandWithParameters::GetParameterInfo in the OLE DB Programmer's Reference.

반환 값Return Value

표준 HRESULT입니다.A standard HRESULT.

CCommand::P repareCCommand::Prepare

현재 명령의 유효성을 검사 하 고 최적화 합니다.Validates and optimizes the current command.

구문Syntax

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

매개 변수Parameters

cExpectedRunscExpectedRuns
진행 명령을 실행 해야 하는 횟수입니다.[in] The number of times you expect to execute the command.

반환 값Return Value

표준 HRESULT입니다.A standard HRESULT.

설명Remarks

이 메서드는 OLE DB 메서드 ICommandPrepare::P repare를 래핑합니다.This method wraps the OLE DB method ICommandPrepare::Prepare.

CCommand:: ReleaseCommandCCommand::ReleaseCommand

매개 변수 접근자를 해제 한 다음 명령 자체를 해제 합니다.Releases the parameter accessor, then releases the command itself.

구문Syntax

void CCommandBase::ReleaseCommand() throw();

설명Remarks

ReleaseCommand 는와 함께 사용 됩니다 Close .ReleaseCommand is used in conjunction with Close. 사용법 정보는 닫기 를 참조 하세요.See Close for usage details.

CCommand:: SetParameterInfoCCommand::SetParameterInfo

각 명령 매개 변수의 네이티브 형식을 지정 합니다.Specifies the native type of each command parameter.

구문Syntax

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

매개 변수Parameters

OLE DB 프로그래머 참조에서 ICommandWithParameters:: SetParameterInfo 를 참조 하세요.See ICommandWithParameters::SetParameterInfo in the OLE DB Programmer's Reference.

반환 값Return Value

표준 HRESULT입니다.A standard HRESULT.

CCommand:: UnprepareCCommand::Unprepare

현재 명령 실행 계획을 삭제 합니다.Discards the current command execution plan.

구문Syntax

HRESULT CCommandBase::Unprepare() throw();

Return ValueReturn Value

표준 HRESULT입니다.A standard HRESULT.

설명Remarks

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

참고 항목See also

OLE DB 소비자 템플릿OLE DB Consumer Templates
OLE DB 소비자 템플릿 참조OLE DB Consumer Templates Reference