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
된 행 집합 및 결과 집합 접근자를 닫고 매개 변수 접근자를 닫아 출력 매개 변수 값을 검색할 수 있도록 합니다.
예시
다음 예제에서는 동일한 명령을 반복해서 실행할 때 Close
및 ReleaseCommand
을 호출할 수 있는 방법을 보여 줍니다.
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입니다.
설명
결과 집합이 이전에 페치된 경우 이 함수는 이전 결과 집합을 해제하고 열을 바인딩 해제합니다. bBind이true
면 새 열을 바인딩합니다.
템플릿 매개 변수 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::GetCommandText 및 ICommandText::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를 래핑합니다.