亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? axcommand.cpp

?? 一個(gè)非常好用的ADO封裝類,程序員不再需要跟煩人的COM接口打交道,寫數(shù)據(jù)庫(kù)程序不再麻煩!
?? CPP
字號(hào):
#include "StdAfx.h"
#include "AxLib.h"

using namespace dbAx;

///////////////////////////////////////////////////////////////
//	Construction

CAxCommand::CAxCommand()
{
  m_piCommand = NULL;
  m_piParameters = NULL;
}

CAxCommand::~CAxCommand()
{
	if ( m_piCommand )
	{
		if ( m_piParameters )
		{
			m_piParameters->Release();
			m_piParameters = NULL;
		}

		if ( m_piCommand )
      m_piCommand->Release();
		m_piCommand = NULL;
	}
}

///////////////////////////////////////////////////////////////
//	Initialization

// Method: Create
//   Desc: Creates and attacheds the underlying ADO Recordset object.
//         Create must be called before using the CAxRecordset object.
//
//   Args: none
//
// Return: void
//
void CAxCommand::Create()
{
  HRESULT hr = ::CoCreateInstance(CLSID_CADOCommand, NULL, CLSCTX_INPROC_SERVER,
    IID_IADOCommand, (LPVOID *)&m_piCommand);

	if FAILED( hr )
    ThrowAxException(AXLIB_ERROR_INIT, _T("CAxCommand::Create"), hr);

	VALID_ADO_OBJECT(m_piCommand);

  hr = m_piCommand->get_Parameters(&m_piParameters);

	if FAILED( hr )
	{
		delete m_piCommand;
		m_piCommand = NULL;
		ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::Create"), hr);
	}

  _CreateParameters();
}

///////////////////////////////////////////////////////////////
//	AxLib Specific

// Method: _SetParamValue
//   Desc: Sets the underlying ADO Parameter's value. Called by
//         _UpdateParameters which is overridden in the derive
//         class.
//
//   Args:
//      lpszParam: Parameter name.
//         pValue: Parameter value.
//
// Return: void
//
void CAxCommand::_SetParamValue(LPCTSTR lpszParam, _variant_t *pValue)
{
	VALID_ADO_OBJECT(m_piCommand);
	ASSERT( m_piParameters != NULL );
	DataTypeEnum eDataType;
  HRESULT hr = S_OK;
	ADOParameter *pParameter = NULL;

  hr =  m_piParameters->get_Item(_variant_t(lpszParam), &pParameter);
	if FAILED( hr )
    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::_SetParamValue"), hr);

  hr = pParameter->get_Type(&eDataType);
	if FAILED( hr )
    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::_SetParamValue"), hr);

  hr = pParameter->put_Type(eDataType);
	if FAILED( hr )
    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::_SetParamValue"), hr);

  hr = pParameter->put_Value(*pValue);
	if FAILED( hr )
    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::_SetParamValue"), hr);

}

///////////////////////////////////////////////////////////////
//	Collections

// Method: Parameters
//   Desc: Returns a reference to the underlying ADO Command's
//         Prameters collection
//
//   Args: none
//
// Return: Pointer to the ADOParameters collection
//
ADOParameters* CAxCommand::Parameters()
{
	VALID_ADO_OBJECT(m_piCommand);
  return (m_piParameters);
}

// Method: Properties
//   Desc: Returns a reference to the underlying ADO Command's
//         Properties collection
//
//   Args: none
//
// Return: Pointer to the ADOProperties collection
//
ADOProperties* CAxCommand::Properties()
{
	VALID_ADO_OBJECT(m_piCommand);
  ADOProperties *pProps;

  HRESULT hr = m_piCommand->get_Properties(&pProps);
  if FAILED( hr )
		ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::Properties"), hr);

  return (pProps);
}

///////////////////////////////////////////////////////////////
//	Methods

// Method: Cancel
//   Desc: Cancels pending asychronous command that is executing.
//         Not supported in this version of AxLib.
//
//   Args: none
//
// Return: void
//
void CAxCommand::Cancel()
{
}

// Method: CreateParameter
//   Desc: Creates and appends a parameter to the underlying
//         ADO Command's Parameters collection. Note, to avoid
//         memory leaks the client application should assign
//         the returned pointer and call Release when it is no
//         longer needed. Otherwise a memory leak will occur
//
//   Args:
//              lpszParam: The parameter name.
//              eDataType: Data type of the parameter
//    eParameterDirection: Parameter direction
//                  lSize: Max size in chars or bytes
//                 pValue: Initial value
//
// Return: Pointer to an ADOParameter object
//
ADOParameter* 
CAxCommand::CreateParameter(LPCTSTR lpszParam,
                                  DataTypeEnum eDataType,
                                  ParameterDirectionEnum eParameterDirection, 
                                  long lSize, _variant_t *pValue)
{
	VALID_ADO_OBJECT(m_piCommand);
  ASSERT( m_piParameters != NULL );
  ADOParameter *pParam = NULL;

  HRESULT hr = m_piCommand->CreateParameter(bstr_t(lpszParam), eDataType, 
                                           eParameterDirection, lSize,
                                           *pValue, &pParam);

  if  FAILED( hr )
    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::CreateParameter"), hr);

  hr = m_piParameters->Append(pParam);

  if FAILED( hr )
    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::CreateParameter"), hr);

  return (pParam);
}

// Method: Execute
//   Desc: Executes a stored procedure, an SQL statement
//         or query against a data provider.
//         
//
//   Args: plAffected - pointer to long indicating the
//         number of records affected.
//
// Return: Pointer to an newly allocated ADORecordset object
//
ADORecordset* CAxCommand::Execute(long *plAffected)
{
	VALID_ADO_OBJECT(m_piCommand);
  _variant_t varAffected(0L);
  _variant_t varParams;
  _variant_t HUGEP *pvtItems = NULL;
  ADORecordset *piRecSet = NULL;
  HRESULT hr = S_OK;

  //Construct parameter arguments from existing parameters
  long lParamCount = 0;

  hr = m_piParameters->get_Count(&lParamCount);
  if  FAILED( hr )
    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::Execute"), hr);
	
  //Create a SafeArray to contain the parameters
  SAFEARRAYBOUND rgsabound[1];
	rgsabound[0].lLbound = 0;
	rgsabound[0].cElements = lParamCount;

  varParams.vt = VT_ARRAY | VT_VARIANT;
  varParams.parray = SafeArrayCreate(VT_VARIANT, 1, rgsabound);

  if ( varParams.parray == NULL )
    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::Execute"), hr);

  hr = SafeArrayAccessData(varParams.parray, (void HUGEP* FAR*)&pvtItems);
  if  FAILED( hr )
    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::Execute"), hr);

  //Compile parameter values into SafeArray
  ADOParameter *pParam = NULL;
  for ( long i = 0; i < lParamCount; i++ )
  {
    m_piParameters->get_Item(_variant_t(i), &pParam);
    pParam->get_Value(&pvtItems[i]);
  }

  //Execute the command
  hr = m_piCommand->Execute(&varAffected, pvtItems, CommandType(), &piRecSet);
  SafeArrayUnaccessData(varParams.parray);

  if  FAILED( hr )
    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::Execute"), hr);

  if ( plAffected )
    *plAffected = varAffected.lVal;

  return (piRecSet);
}

///////////////////////////////////////////////////////////////
//	Properties

// Method: ActiveConnection
//   Desc: Sets/Returns the object's CAxConnection reference.
//         Call with no argument to return the current value.
//
//   Args:
//      pCn: Reference to an existing CAxConnection object.
//
// Return: The current CAxConnection reference.
//
CAxConnection* CAxCommand::ActiveConnection(CAxConnection *pCn)
{
	VALID_ADO_OBJECT(m_piCommand);

  if ( pCn )
  {
    m_pConnection = pCn;

    if ( !pCn->_IsOpen() )
      ThrowAxException(AXLIB_ERROR_INIT, 
        _T("CAxCommand::SetActiveConnection"));

    HRESULT hr = m_piCommand->putref_ActiveConnection(m_pConnection->_GetActiveConnection());

    if FAILED( hr )
      ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::ActiveConnection"), hr);
  }

  return (m_pConnection);
}

// Method: CommandText
//   Desc: Sets/Returns the object's commandtext string.
//         Call with no argument to return the current value.
//
//   Args:
//      lpszCmdText: New command text string
//
// Return: The current command text.
//
LPCTSTR CAxCommand::CommandText(LPCTSTR lpszCmdText) 
{
	VALID_ADO_OBJECT(m_piCommand);

#ifdef _UNICODE
  bstr_t bstrCmdText(lpszCmdText);
#else
  bstr_t bstrCmdText(M2W(lpszCmdText));
#endif

  HRESULT hr = S_OK;

  if ( lpszCmdText )
  {
    hr = m_piCommand->put_CommandText(bstrCmdText);
	  if FAILED( hr )
      ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::CommandText"), hr);
  }

  BSTR bstrCommandText;
  hr = m_piCommand->get_CommandText(&bstrCommandText);
	if FAILED( hr )
    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::CommandText"), hr);
    
  return (CString(bstrCommandText).operator LPCTSTR());
}

// Method: CommandTimeout
//   Desc: Sets/Returns the object's timeout setting.
//         Call with no argument to return the current value.
//
//   Args:
//      lSeconds: Number of seconds to wait before terminating
//
// Return: The current timeout setting.
//
long CAxCommand::CommandTimeout(long lSeconds)
{
	VALID_ADO_OBJECT(m_piCommand);
  HRESULT hr = S_OK;

  if ( lSeconds >= 0 )
  {
    hr = m_piCommand->put_CommandTimeout(lSeconds);
	  if FAILED( hr )
      ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::CommandTimeout"), hr);
  }

  long lCmdTimeout;
  hr = m_piCommand->get_CommandTimeout(&lCmdTimeout);
	if FAILED( hr )
    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::CommandTimeout"), hr);

  return (lCmdTimeout);
}

// Method: CommandType
//   Desc: Sets/Returns the object's command type setting.
//         Call with no argument to return the current value.
//
//   Args:
//      eCmdType: The command type to use
//
// Return: The current command type setting.
//
CommandTypeEnum CAxCommand::CommandType(CommandTypeEnum eCmdType)
{
	VALID_ADO_OBJECT(m_piCommand);
  HRESULT hr = S_OK;

  if ( eCmdType > adCmdUnspecified )
  {
    hr = m_piCommand->put_CommandType(eCmdType);
	  if FAILED( hr )
      ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::CommandType"), hr);
  }

  CommandTypeEnum eCommandType;
  hr = m_piCommand->get_CommandType(&eCommandType);
  if FAILED( hr )
    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::CommandType"), hr);

  return (eCommandType);
}

/*
void CAxCommand::Prepared(bool iPrepared)
{
	VALID_ADO_OBJECT(m_piCommand);

	if FAILED( m_piCommand->put_Prepared(iPrepared) )
    ThrowAxException(AXLIB_ERROR_NONE);
}

bool CAxCommand::GetPrepared()
{
	VALID_ADO_OBJECT(m_piCommand);
	short bPrepared;

	if FAILED( m_piCommand->get_Prepared(&bPrepared) )
    ThrowAxException(AXLIB_ERROR_NONE);

	return ( bPrepared > 0 );
}
*/

// Method: State
//   Desc: Returns the object's immediate state.
//
//   Args: none
//
// Return: The current state of the object.
//
ObjectStateEnum CAxCommand::State()
{
	VALID_ADO_OBJECT(m_piCommand);
	long lState = 0;

  HRESULT hr = m_piCommand->get_State(&lState);
	if FAILED( hr )
    ThrowAxException(AXLIB_ERROR_NONE, _T("CAxCommand::State"), hr);

	return ((ObjectStateEnum)lState);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合久久国产九一剧情麻豆| 欧美国产亚洲另类动漫| 国产麻豆成人传媒免费观看| 亚洲精品国产成人久久av盗摄| 欧美一区二区播放| 在线观看日韩精品| 国产精品正在播放| 日本亚洲一区二区| 国产精品私房写真福利视频| 91婷婷韩国欧美一区二区| 青青国产91久久久久久 | 亚洲一区二区3| 麻豆一区二区三区| 一区二区三区在线高清| 国产精品久久久久影院色老大| 欧美大肚乱孕交hd孕妇| 欧美另类videos死尸| www.欧美日韩| 成人av免费在线| 国产精品一区不卡| 国产原创一区二区| 久久国产综合精品| 日韩高清不卡一区二区三区| 亚洲在线视频网站| 亚洲精选在线视频| 亚洲免费色视频| 亚洲欧美国产77777| 国产精品乱人伦| 国产精品久久久一区麻豆最新章节| 久久五月婷婷丁香社区| 337p日本欧洲亚洲大胆精品| 日韩欧美另类在线| 欧美精品一区二区在线播放| 日韩精品影音先锋| 久久午夜电影网| 国产日产欧美一区二区三区| 日本一区二区成人在线| 国产精品久久午夜夜伦鲁鲁| 国产精品久久久久精k8 | 亚洲成人综合视频| 亚洲一区视频在线| 日韩中文字幕亚洲一区二区va在线 | 美日韩一级片在线观看| 日韩高清在线一区| 蜜桃一区二区三区四区| 另类调教123区 | 99在线精品免费| 一道本成人在线| 欧美日高清视频| 欧美一级日韩免费不卡| 久久天堂av综合合色蜜桃网| 久久精品日韩一区二区三区| 中文字幕一区二| 亚洲激情一二三区| 丝瓜av网站精品一区二区| 美国精品在线观看| 国产高清视频一区| 91视频www| 欧美日本一区二区三区| 精品国产免费一区二区三区香蕉| 国产日韩精品一区| 亚洲综合精品自拍| 麻豆久久久久久久| 成人黄色电影在线| 欧美性猛片aaaaaaa做受| 日韩一区二区三区视频| 久久久久久久久久久99999| 亚洲人成人一区二区在线观看| 亚洲大型综合色站| 国产在线精品免费av| 91啪亚洲精品| 日韩视频免费直播| 国产精品女上位| 午夜av区久久| 国产精品66部| 欧美综合一区二区| 久久久久久久精| 亚洲成人动漫在线观看| 国产精品一二三区在线| 欧美日韩一区二区三区不卡| 久久久久久久一区| 五月天欧美精品| 成人一区二区三区视频| 欧美日韩国产综合一区二区三区| 久久久99久久| 亚洲va国产天堂va久久en| 国产91精品在线观看| 91麻豆精品国产91久久久| 国产午夜精品福利| 日韩精品午夜视频| 色素色在线综合| 中文字幕欧美激情一区| 热久久久久久久| 欧洲一区二区三区免费视频| 欧美激情在线一区二区三区| 日本亚洲最大的色成网站www| 99国产精品久久久久久久久久久| 精品剧情v国产在线观看在线| 亚洲黄一区二区三区| 国产综合色在线| 在线电影欧美成精品| 一区二区三区欧美日| 国产成人小视频| 亚洲精品一区二区三区99| 亚洲国产精品精华液网站| 成人黄色网址在线观看| 久久精品一区八戒影视| 免费一区二区视频| 欧美精品v日韩精品v韩国精品v| 亚洲精品写真福利| 99久久婷婷国产综合精品电影| 久久精品视频在线免费观看| 久久国产精品99精品国产 | 久久免费的精品国产v∧| 日韩不卡在线观看日韩不卡视频| 欧美亚洲愉拍一区二区| 亚洲色欲色欲www| 成人涩涩免费视频| 欧美激情一区二区三区| 国产一区二区三区四| 欧美r级在线观看| 久久成人麻豆午夜电影| 日韩一区国产二区欧美三区| 首页综合国产亚洲丝袜| 欧美日韩中字一区| 亚洲一区日韩精品中文字幕| 99re在线精品| 亚洲精品成人少妇| 欧美在线999| 亚洲一区二区三区四区五区黄| 欧美中文字幕一区| 亚洲动漫第一页| 欧美麻豆精品久久久久久| 亚洲成av人片在www色猫咪| 欧美日韩成人在线一区| 日本女人一区二区三区| 日韩欧美自拍偷拍| 精品一区二区影视| 国产性色一区二区| 99久久777色| 伊人夜夜躁av伊人久久| 精品视频一区三区九区| 婷婷一区二区三区| 欧美岛国在线观看| 国产乱妇无码大片在线观看| 欧美国产国产综合| 一本久久精品一区二区| 亚洲成av人**亚洲成av**| 欧美一区二区三区思思人| 精品影院一区二区久久久| 国产女人18毛片水真多成人如厕 | 午夜久久久久久| 欧美一区永久视频免费观看| 精品一区二区三区免费视频| 久久久久亚洲综合| 色香色香欲天天天影视综合网| 亚洲韩国一区二区三区| 日韩一区二区三区四区| 高清不卡在线观看| 亚洲一区在线看| 精品国产麻豆免费人成网站| 成人动漫精品一区二区| 亚洲成av人在线观看| 精品乱码亚洲一区二区不卡| 99久久99久久免费精品蜜臀| 偷偷要91色婷婷| 国产欧美精品一区| 欧美综合色免费| 国产一区二区三区电影在线观看 | 天堂久久一区二区三区| 精品剧情在线观看| 色噜噜偷拍精品综合在线| 麻豆国产欧美日韩综合精品二区| 国产喂奶挤奶一区二区三区| 在线看日韩精品电影| 国产在线精品一区二区不卡了| 亚洲欧美日韩系列| 亚洲精品在线观看网站| 欧美中文字幕一二三区视频| 国产在线不卡视频| 亚洲成va人在线观看| 国产精品视频一二三区 | 制服.丝袜.亚洲.另类.中文| 国产suv精品一区二区6| 日韩专区一卡二卡| 亚洲天堂久久久久久久| 欧美大片顶级少妇| 在线亚洲一区观看| 国产很黄免费观看久久| 日本不卡中文字幕| 亚洲日本一区二区| 国产亚洲一区二区三区| 欧美日韩国产在线播放网站| av综合在线播放| 国产一区二区成人久久免费影院| 亚洲福利视频导航| 综合欧美亚洲日本| 久久久www免费人成精品| 5858s免费视频成人| 色女孩综合影院|