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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? adocommand.cpp

?? VC++ 6.0開發。之中打印部分可能對您有值得參考的地方。其他的部分還不是很完善
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*########################################################################
	Filename: 	ado.cpp
	----------------------------------------------------
	Remarks:	...
	----------------------------------------------------
	Author:		成真
	Email:		anyou@sina.com
				anyou@msn.com
	Created:	20/1/2003 19:19
  ########################################################################*/
#include "stdafx.h"
#include "resource.h"
#include "AdoCommand.h"


#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

/*########################################################################
			------------------------------------------------
						   CAdoCommand class
			------------------------------------------------
  ########################################################################*/

CAdoCommand::CAdoCommand()
{
	///創建 Connection 對象---------------------------
	m_pCommand.CreateInstance("ADODB.Command");
	#ifdef _DEBUG
	if (m_pCommand == NULL)
	{
		AfxMessageBox("Command 對象創建失敗! 請確認是否初始化了Com環境.");
	}
	#endif
	ASSERT(m_pCommand != NULL);
}

CAdoCommand::CAdoCommand(CAdoConnection* pAdoConnection, CString strCommandText, CommandTypeEnum CommandType)
{
	///創建 Connection 對象---------------------------
	m_pCommand.CreateInstance("ADODB.Command");
	#ifdef _DEBUG
	if (m_pCommand == NULL)
	{
		AfxMessageBox("Command 對象創建失敗! 請確認是否初始化了Com環境.");
	}
	#endif
	ASSERT(m_pCommand != NULL);
	ASSERT(pAdoConnection != NULL);
	SetConnection(pAdoConnection);
	if (strCommandText != _T(""))
	{
		SetCommandText(LPCTSTR(strCommandText));
	}
	SetCommandType(CommandType);
}

CAdoCommand::~CAdoCommand()
{
	Release();
}

void CAdoCommand::Release()
{
	try
	{
		m_pCommand.Release();
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: Release方法發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
	} 
}

_RecordsetPtr CAdoCommand::Execute(long Options)
{
	ASSERT(m_pCommand != NULL);
	try
	{
		return m_pCommand->Execute(NULL, NULL, Options);
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: Execute 方法發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		return NULL;
	} 
}

BOOL CAdoCommand::Cancel()
{
	ASSERT(m_pCommand != NULL);
	
	try
	{
		return (m_pCommand->Cancel() == S_OK);
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: Cancel 方法發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		return FALSE;
	} 
}

_ParameterPtr CAdoCommand::CreateParameter(LPCTSTR lpstrName, 
								  DataTypeEnum Type, 
								  ParameterDirectionEnum Direction, 
								  long Size, 
								  _variant_t Value)
{

	ASSERT(m_pCommand != NULL);
	try
	{
		return m_pCommand->CreateParameter(_bstr_t(lpstrName), Type, Direction, Size, Value);
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: CreateParameter 方法發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		return NULL;
	} 
}

BOOL CAdoCommand::SetCommandText(LPCTSTR lpstrCommand)
{
	ASSERT(m_pCommand != NULL);
	try
	{
		m_pCommand->PutCommandText(_bstr_t(lpstrCommand));
		return TRUE;
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: PutCommandText 方法發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		return FALSE;
	} 
}

BOOL CAdoCommand::SetConnection(CAdoConnection *pConnect)
{
	ASSERT(pConnect != NULL);
	ASSERT(pConnect->GetConnection() != NULL);
	ASSERT(m_pCommand != NULL);
	
	try
	{
		m_pCommand->PutActiveConnection(_variant_t((IDispatch*)pConnect->GetConnection(), true));
		return TRUE;
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: SetConnection 方法發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		return FALSE;
	} 
}
/*========================================================================
	Name:		指示 Command 對象的類型。
    ----------------------------------------------------------
	returns:	返回以下某個 CommandTypeEnum 的值.
		[常量]				 [說明] 
		----------------------------------
		adCmdText			指示strSQL為命令文本, 即普通的SQL語句. 
		adCmdTable			指示ADO生成SQL查詢返回以 strSQL 命名的表中的
						所有行. 
		adCmdTableDirect	指示所作的更改在strSQL中命名的表中返回所有行. 
		adCmdStoredProc		指示strSQL為存儲過程. 
		adCmdUnknown		指示strSQL參數中的命令類型為未知. 
		adCmdFile			指示應從在strSQL中命名的文件中恢復保留(保存的)
						Recordset. 
		adAsyncExecute		指示應異步執行strSQL. 
		adAsyncFetch		指示在提取 Initial Fetch Size 屬性中指定的初始
						數量后, 應該異步提取所有剩余的行. 如果所需的行尚未
						提取, 主要的線程將被堵塞直到行重新可用. 
		adAsyncFetchNonBlocking 指示主要線程在提取期間從未堵塞. 如果所請求
						的行尚未提取, 當前行自動移到文件末尾. 
   ----------------------------------------------------------
	Remarks: 使用 CommandType 屬性可優化 CommandText 屬性的計算。
		如果 CommandType 屬性的值等于 adCmdUnknown(默認值), 系統的性能將會
	降低, 因為 ADO 必須調用提供者以確定 CommandText 屬性是 SQL 語句、還是存
	儲過程或表格名稱。如果知道正在使用的命令的類型, 可通過設置 CommandType 
	屬性指令 ADO 直接轉到相關代碼。如果 CommandType 屬性與 CommandText 屬
	性中的命令類型不匹配, 調用 Execute 方法時將產生錯誤。
==========================================================================*/
BOOL CAdoCommand::SetCommandType(CommandTypeEnum CommandType)
{
	ASSERT(m_pCommand != NULL);
	
	try
	{
		m_pCommand->PutCommandType(CommandType);
		return TRUE;
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: PutCommandType 方法發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		return FALSE;
	} 
}

long CAdoCommand::GetState()
{
	ASSERT(m_pCommand != NULL);
	
	try
	{
		return m_pCommand->GetState();
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: GetState 方法發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		return -1;
	} 
}

BOOL CAdoCommand::SetCommandTimeOut(long lTime)
{
	ASSERT(m_pCommand != NULL);
	
	try
	{
		m_pCommand->PutCommandTimeout(lTime);
		return TRUE;
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: SetCommandTimeOut 方法發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		return FALSE;
	} 
}

ParametersPtr CAdoCommand::GetParameters()
{
	ASSERT(m_pCommand != NULL);
	
	try
	{
		return m_pCommand->GetParameters();
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: SetCommandTimeOut 方法發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		return NULL;
	} 
}

BOOL CAdoCommand::Append(_ParameterPtr param)
{
	ASSERT(m_pCommand != NULL);
	
	try
	{
		return m_pCommand->GetParameters()->Append((IDispatch*)param);
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: Append 方法發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		return FALSE;
	} 
}


_ParameterPtr CAdoCommand::GetParamter(LPCTSTR lpstrName)
{
	ASSERT(m_pCommand != NULL);
	
	try
	{
		return m_pCommand->GetParameters()->GetItem(_variant_t(lpstrName));
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: GetParamter 方法發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		return NULL;
	} 
}

_ParameterPtr CAdoCommand::GetParameter(long index)
{
	ASSERT(m_pCommand != NULL);
	
	try
	{
		return m_pCommand->GetParameters()->GetItem(_variant_t(index));
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: GetParamter 方法發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		return NULL;
	} 
}

_variant_t CAdoCommand::GetValue(long index)
{
	ASSERT(m_pCommand != NULL);
	
	try
	{
		return m_pCommand->GetParameters()->GetItem(_variant_t(index))->Value;
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: GetValue 方法發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		_variant_t vt;
		vt.vt = VT_NULL;
		return vt;
	} 
}

_variant_t CAdoCommand::GetValue(LPCTSTR lpstrName)
{
	ASSERT(m_pCommand != NULL);
	
	try
	{
		return m_pCommand->GetParameters()->GetItem(_variant_t(lpstrName))->Value;
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: GetValue 方法發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		_variant_t vt;
		vt.vt = VT_NULL;
		return vt;
	} 
}

_CommandPtr& CAdoCommand::GetCommand()
{
	return m_pCommand;
}

CAdoParameter CAdoCommand::operator [](int index)
{
	CAdoParameter pParameter;
	ASSERT(m_pCommand != NULL);
	try
	{
		pParameter = m_pCommand->GetParameters()->GetItem(_variant_t(long(index)));
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: operator [] 方法發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
	}
	return pParameter;
}

CAdoParameter CAdoCommand::operator [](LPCTSTR lpszParamName)
{
	CAdoParameter pParameter;
	ASSERT(m_pCommand != NULL);
	try
	{
		pParameter = m_pCommand->GetParameters()->GetItem(_variant_t(lpszParamName));
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: operator [] 方法發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
	}
	return pParameter;
}


/*########################################################################
			  ------------------------------------------------
						     CAdoParameter class
			  ------------------------------------------------
  ########################################################################*/
CAdoParameter::CAdoParameter()
{
	m_pParameter = NULL;
	m_pParameter.CreateInstance("ADODB.Parameter");
	#ifdef _DEBUG
	if (m_pParameter == NULL)
	{
		AfxMessageBox("Parameter 對象創建失敗! 請確認是否初始化了Com環境.");
	}
	#endif
	ASSERT(m_pParameter != NULL);
	m_strName = _T("");
}

CAdoParameter::CAdoParameter(DataTypeEnum DataType, long lSize, ParameterDirectionEnum Direction, CString strName)
{
	m_pParameter = NULL;
	m_pParameter.CreateInstance("ADODB.Parameter");
	#ifdef _DEBUG
	if (m_pParameter == NULL)
	{
		AfxMessageBox("Parameter 對象創建失敗! 請確認是否初始化了Com環境.");
	}
	#endif
	ASSERT(m_pParameter != NULL);

	m_pParameter->Direction = Direction;
	m_strName = strName;
	m_pParameter->Name = m_strName.AllocSysString();
	m_pParameter->Type = DataType;
	m_pParameter->Size = lSize;
}

_ParameterPtr& CAdoParameter::operator =(_ParameterPtr& pParameter)
{
	if (pParameter != NULL)
	{
		m_pParameter = pParameter;
	}
	else
	{
		return pParameter;
	}
	return m_pParameter;
}

CAdoParameter::~CAdoParameter()
{
	m_pParameter.Release();
	m_pParameter = NULL;
	m_strName = _T("");
}

/*========================================================================
	Name:		指示在 Parameter 對象中數字值或數字 Field 對象的精度。
    ----------------------------------------------------------
	Params:		設置或返回 Byte 值,用來表示值的最大位數。該值在 Parameter
			對象上為讀/寫,而在 Field 對象上為只讀。
    ----------------------------------------------------------
	Remarks:	使用 Precision 屬性可確定表示數字 Parameter 或 Field 對象值
			的最大位數
==========================================================================*/
BOOL CAdoParameter::SetPrecision(char nPrecision)
{
	ASSERT(m_pParameter != NULL);
	try
	{
		m_pParameter->PutPrecision(nPrecision);
		return TRUE;
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: SetPrecision 方法發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		return FALSE;
	}
}

/*========================================================================
	Name:		指出 Parameter 或 Field 對象中數字值的范圍。
    ----------------------------------------------------------
	Params:		設置或返回字節值,指示數字值所精確到的小數點位數。
    ----------------------------------------------------------
	Remarks:	使用 NumericScale 屬性可確定用于表明數字型 Parameter 或 Field 
		對象的值的小數位數。
		對于 Parameter 對象,NumericScale 屬性為讀/寫。對于 Field 對象,
	NumericScale 屬性為只讀。

==========================================================================*/
BOOL CAdoParameter::SetNumericScale(int nScale)
{
	ASSERT(m_pParameter != NULL);
	try
	{
		m_pParameter->PutNumericScale(nScale);
		return TRUE;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕亚洲欧美在线不卡| 精品一区二区av| 国产精品视频九色porn| 精品久久久久久久久久久久久久久 | 99r精品视频| 丁香婷婷综合激情五月色| 国产精品中文字幕日韩精品| 精品一区二区成人精品| 久久精品免费看| 久久国产日韩欧美精品| 美腿丝袜一区二区三区| 久久不见久久见中文字幕免费| 美女视频网站黄色亚洲| 久久超碰97中文字幕| 激情都市一区二区| 国产美女视频一区| 成人在线视频一区| 91原创在线视频| 色噜噜狠狠色综合中国| 欧美日韩一区二区三区四区五区| 欧美手机在线视频| 91精品中文字幕一区二区三区| 91精品视频网| 久久综合五月天婷婷伊人| 国产亚洲女人久久久久毛片| 国产精品久久久久久久久免费樱桃| 中文字幕视频一区| 亚洲综合色噜噜狠狠| 日本vs亚洲vs韩国一区三区二区 | 国产自产视频一区二区三区| 国产精品亚洲一区二区三区在线| 成人精品亚洲人成在线| 日本久久一区二区三区| 在线电影欧美成精品| 欧美大片顶级少妇| 国产偷v国产偷v亚洲高清| 亚洲色图欧美在线| 亚洲成av人片一区二区三区| 久久99久久久久久久久久久| 粉嫩av亚洲一区二区图片| 在线视频综合导航| 日韩一区二区精品葵司在线| 中文字幕av一区二区三区高| 一区二区三区四区精品在线视频| 免费在线看一区| 成人精品一区二区三区中文字幕 | 精品福利视频一区二区三区| 国产精品灌醉下药二区| 性做久久久久久久免费看| 激情小说欧美图片| av在线播放不卡| 在线播放国产精品二区一二区四区| 精品国产乱码久久久久久影片| 亚洲人成伊人成综合网小说| 日韩avvvv在线播放| 国产大陆a不卡| 欧美色精品在线视频| 久久亚洲综合av| 亚洲午夜精品网| 丁香激情综合五月| 欧美精三区欧美精三区| 国产午夜亚洲精品午夜鲁丝片| 亚洲综合av网| 国产成人精品影视| 在线成人免费视频| 国产精品久久福利| 国产中文字幕一区| 欧美日韩一区在线| 国产精品久久久久久久午夜片| 免费的国产精品| 欧美自拍丝袜亚洲| 中文一区一区三区高中清不卡| 日韩二区三区四区| 色88888久久久久久影院野外| 久久精品一区四区| 麻豆视频一区二区| 欧美视频一区二| 亚洲人成人一区二区在线观看 | 国产美女一区二区| 91精品国产乱| 一区二区三区国产精品| 国产成人在线色| 精品国产乱码久久久久久久| 亚洲成人免费视频| 91丨九色丨尤物| 国产午夜精品在线观看| 久久疯狂做爰流白浆xx| 欧美高清激情brazzers| 亚洲伊人色欲综合网| 成人av在线一区二区| 欧美变态口味重另类| 日韩国产成人精品| 在线播放欧美女士性生活| 亚洲午夜久久久久久久久电影院 | 911精品国产一区二区在线| 亚洲精品日日夜夜| 色999日韩国产欧美一区二区| 国产精品高清亚洲| 99精品国产视频| 亚洲视频图片小说| 成人国产精品免费| 中文字幕乱码亚洲精品一区| 风间由美一区二区av101| 欧美激情综合五月色丁香小说| 国产麻豆精品一区二区| 国产日韩av一区二区| 国产aⅴ精品一区二区三区色成熟| 26uuu国产在线精品一区二区| 裸体健美xxxx欧美裸体表演| 91精品国产入口| 午夜视频在线观看一区| 欧美一a一片一级一片| 亚洲国产精品一区二区www在线| 99久久精品国产导航| 中文字幕欧美一区| 成人精品鲁一区一区二区| 欧美精三区欧美精三区| 日韩精品久久久久久| 欧美日韩高清在线播放| 亚洲成av人片www| 欧美精品日韩综合在线| 亚洲高清视频在线| 欧美中文字幕久久| 亚洲制服丝袜av| 91久久一区二区| 亚洲一二三专区| 欧美日韩一级黄| ...xxx性欧美| 欧美日韩国产首页| 亚洲成人免费电影| 91精品国产入口在线| 久久成人免费日本黄色| 日韩亚洲欧美高清| 国产成人免费视频网站高清观看视频 | 日本在线不卡一区| 久久网站最新地址| 99这里只有精品| 亚洲高清一区二区三区| 精品国产乱码久久| 国产成a人亚洲| www日韩大片| 91在线视频播放地址| 一区二区三区日韩在线观看| 欧美日韩在线亚洲一区蜜芽| 欧美aaaaaa午夜精品| 精品国产免费人成在线观看| 国产激情视频一区二区在线观看| 亚洲欧洲精品一区二区三区| 91久久精品午夜一区二区| 五月婷婷激情综合| 精品国产乱码久久久久久图片| 国产成人在线视频播放| 一区二区三区中文字幕| 欧美嫩在线观看| 久久黄色级2电影| 欧美va亚洲va| 91久久精品国产91性色tv| 图片区小说区区亚洲影院| 久久综合国产精品| 97精品久久久久中文字幕| 国产精品久久久久久一区二区三区| 欧美日本在线视频| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 亚洲va国产天堂va久久en| 日韩欧美www| 色综合网色综合| 国产主播一区二区三区| 国产精品美女久久久久久久| 欧美一区二区性放荡片| 成人免费看片app下载| 日韩一区精品字幕| 国产精品国产三级国产三级人妇| 欧美一二三区精品| 91在线精品一区二区三区| 免费在线观看一区| 亚洲色欲色欲www| 91精品国产综合久久久久久久 | www.视频一区| 蜜臀精品一区二区三区在线观看| 国产精品久久久99| 日韩欧美一区二区免费| 国产高清视频一区| 一区二区三区美女| 日韩欧美国产电影| 欧美日韩在线免费视频| 成人国产一区二区三区精品| 久久精品99久久久| 亚洲精品高清在线| 国产日产欧美一区| 日韩午夜在线影院| 91精彩视频在线观看| 99久久婷婷国产综合精品| 国产一区二区导航在线播放| 亚洲色图视频网站| 国产欧美视频一区二区三区| 亚洲精品一区二区三区影院| 欧美日韩一级二级三级| 成人少妇影院yyyy| 国产精品一二三| 日韩和欧美一区二区三区|