102 lines
2.5 KiB
C
102 lines
2.5 KiB
C
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Copyright (c) 1998, Microsoft Corp. All rights reserved.
|
||
|
//
|
||
|
// FILE
|
||
|
//
|
||
|
// cmdbase.h
|
||
|
//
|
||
|
// SYNOPSIS
|
||
|
//
|
||
|
// This file declares the class CommandBase.
|
||
|
//
|
||
|
// MODIFICATION HISTORY
|
||
|
//
|
||
|
// 02/20/1998 Original version.
|
||
|
// 02/15/1999 Make commands MT safe.
|
||
|
// 02/19/1999 Move definition of CommandBase::Execute to propcmd.cpp
|
||
|
// 05/30/2000 Add trace support.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#ifndef _CMDBASE_H_
|
||
|
#define _CMDBASE_H_
|
||
|
|
||
|
#include <bind.h>
|
||
|
#include <guard.h>
|
||
|
#include <nocopy.h>
|
||
|
#include <oledb.h>
|
||
|
|
||
|
void CheckOleDBError(PCSTR functionName, HRESULT errorCode);
|
||
|
|
||
|
//////////
|
||
|
// The maximum length of a stringized LONG.
|
||
|
//////////
|
||
|
const size_t SZLONG_LENGTH = 12;
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// CLASS
|
||
|
//
|
||
|
// CommandBase
|
||
|
//
|
||
|
// DESCRIPTION
|
||
|
//
|
||
|
// This class provides serves as an abstract base class for paremeterized,
|
||
|
// prepared, text SQL commands.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////
|
||
|
class CommandBase : NonCopyable, protected Guardable
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
CommandBase() throw ();
|
||
|
virtual ~CommandBase() throw ();
|
||
|
|
||
|
void initialize(IUnknown* session);
|
||
|
void finalize() throw ();
|
||
|
|
||
|
protected:
|
||
|
|
||
|
// Executes the command.
|
||
|
void execute(REFIID refiid = IID_NULL, IUnknown** result = NULL);
|
||
|
|
||
|
// Releases an accessor associated with this command.
|
||
|
void releaseAccessor(HACCESSOR h) throw ()
|
||
|
{
|
||
|
Bind::releaseAccessor(command, h);
|
||
|
}
|
||
|
|
||
|
// Sets and prepares the command text.
|
||
|
void setCommandText(PCWSTR commandText);
|
||
|
|
||
|
// Sets the parameter data buffer.
|
||
|
void setParameterData(PVOID data) throw ()
|
||
|
{
|
||
|
dbParams.pData = data;
|
||
|
}
|
||
|
|
||
|
// Sets the parameter accessor for the command.
|
||
|
void setParamIO(HACCESSOR accessor) throw ()
|
||
|
{
|
||
|
dbParams.cParamSets = 1;
|
||
|
|
||
|
dbParams.hAccessor = accessor;
|
||
|
}
|
||
|
|
||
|
// Associates a session with the command. This triggers the actual creation
|
||
|
// of the underlying OLE-DB command object.
|
||
|
void setSession(IUnknown* session);
|
||
|
|
||
|
// Defined in the sub-class to create a parameter accessor.
|
||
|
virtual HACCESSOR createParamIO(IUnknown* session) const = 0;
|
||
|
|
||
|
// Defined in the sub-class to return the SQL text.
|
||
|
virtual PCWSTR getCommandText() const throw () = 0;
|
||
|
|
||
|
CComPtr<ICommandText> command; // The OLE-DB command object.
|
||
|
DBPARAMS dbParams; // Parameter data.
|
||
|
};
|
||
|
|
||
|
#endif // _CMDBASE_H_
|