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

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

?? adocommand.cpp

?? 一個ADO數據庫的開發(數據庫中能存儲位圖)
?? 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一区二区三区免费野_久草精品视频
国产一区二区三区最好精华液| 国产精品你懂的在线欣赏| 国产成人aaa| 日韩精品1区2区3区| 国产精品日日摸夜夜摸av| 777午夜精品视频在线播放| 972aa.com艺术欧美| 国内精品国产成人国产三级粉色| 亚洲.国产.中文慕字在线| 亚洲欧洲av在线| 中文一区二区完整视频在线观看| 欧美一区二区高清| 99久久亚洲一区二区三区青草 | 国产精品18久久久久久久网站| 精品国产污网站| 91麻豆精品国产91| 色综合夜色一区| 成人午夜电影久久影院| 国产精品一卡二卡在线观看| 蜜乳av一区二区| 日韩国产欧美在线播放| 亚洲第一会所有码转帖| 夜夜精品浪潮av一区二区三区| 亚洲人吸女人奶水| 亚洲欧美一区二区三区极速播放| 中文字幕在线观看不卡| 亚洲国产精品成人综合| 国产欧美日韩中文久久| 国产亚洲福利社区一区| 日本一二三四高清不卡| 国产精品国产三级国产| 亚洲日本丝袜连裤袜办公室| 日韩理论电影院| 亚洲色图视频网| 亚洲r级在线视频| 亚洲欧洲一区二区在线播放| 中文字幕制服丝袜一区二区三区 | 久久99精品久久久久婷婷| 久久超级碰视频| 国产久卡久卡久卡久卡视频精品| 国产高清在线观看免费不卡| youjizz久久| 色婷婷久久久亚洲一区二区三区| 91成人免费在线视频| 日本道免费精品一区二区三区| 懂色一区二区三区免费观看| 成人国产一区二区三区精品| 91丝袜美腿高跟国产极品老师| 日本丶国产丶欧美色综合| 欧美精品色综合| 久久综合九色综合欧美就去吻| 久久精品一二三| 一区二区三区.www| 亚洲精品五月天| 亚洲bt欧美bt精品777| 韩国一区二区在线观看| caoporm超碰国产精品| 欧美日韩一级大片网址| 久久女同精品一区二区| 亚洲精品亚洲人成人网| 国产一区二区三区免费播放| 91蜜桃在线观看| wwww国产精品欧美| 亚洲综合色噜噜狠狠| 奇米色一区二区三区四区| 成人av在线资源| 日韩一区二区三区在线观看| 国产精品久久久久影院老司| 天天色图综合网| 99精品欧美一区二区三区小说| 欧美一级黄色大片| 悠悠色在线精品| 狠狠久久亚洲欧美| 日本精品一区二区三区四区的功能| 欧美一区二区网站| 亚洲欧美日韩电影| 国产精品一色哟哟哟| 91精品国产入口在线| 亚洲色图19p| 国产成人免费在线视频| 日韩精品一区二区三区蜜臀| 亚洲卡通欧美制服中文| 成人99免费视频| 亚洲精品一区二区三区影院 | 亚洲图片欧美综合| 精品一区二区在线视频| 99久久伊人久久99| 久久精品一级爱片| 国产在线国偷精品产拍免费yy| 欧美系列一区二区| 亚洲欧美综合色| 国产成人亚洲精品狼色在线| 欧美第一区第二区| 日产国产高清一区二区三区| 色婷婷综合久久久久中文一区二区| 国产精品理论片在线观看| 国产成人在线影院| 97精品国产97久久久久久久久久久久| 国产免费成人在线视频| 国产精品一区二区在线观看不卡| 日韩欧美激情一区| 美国欧美日韩国产在线播放| 欧美一区三区四区| 日韩av电影免费观看高清完整版 | 亚洲精品一区二区三区99| 蜜桃av一区二区| www久久精品| 国产在线不卡一区| 日韩午夜在线观看视频| 蜜臀av一区二区| 久久综合九色综合欧美98| 国产激情偷乱视频一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av | 欧美一区二区三区免费视频| 午夜av区久久| 欧美乱妇20p| 激情图片小说一区| 国产精品网站一区| 色偷偷久久一区二区三区| 夜夜揉揉日日人人青青一国产精品| 欧美色区777第一页| 日韩综合一区二区| 久久久久久夜精品精品免费| 粉嫩欧美一区二区三区高清影视| 亚洲女人的天堂| 欧美一级久久久| 国产精品综合二区| 亚洲欧洲三级电影| 91网站在线播放| 日韩精品成人一区二区三区| 精品国产髙清在线看国产毛片| 国产成人在线电影| 亚洲成人av电影在线| 26uuu久久天堂性欧美| 色综合久久久久综合99| 日本亚洲三级在线| 国产精品理伦片| 欧美天堂一区二区三区| 国内精品国产成人国产三级粉色| 亚洲欧洲国产专区| 日韩精品一区二区三区三区免费 | 麻豆91在线看| 亚洲欧美国产三级| www久久久久| 538prom精品视频线放| 高清国产一区二区| 人人爽香蕉精品| 洋洋成人永久网站入口| 欧美一级xxx| 一本久久精品一区二区| 国产精品一区二区久久精品爱涩 | 色婷婷香蕉在线一区二区| 精品一二线国产| 91精品国产综合久久精品app | 欧美日韩高清一区| 91精品福利在线| 在线视频你懂得一区二区三区| www.66久久| 91香蕉国产在线观看软件| 99热精品一区二区| 色综合天天综合网天天看片| 91啪九色porn原创视频在线观看| 9色porny自拍视频一区二区| jlzzjlzz欧美大全| 色婷婷久久久久swag精品| 日本丰满少妇一区二区三区| 欧美午夜精品久久久| 4hu四虎永久在线影院成人| 欧美妇女性影城| 精品国产91洋老外米糕| 日本一区免费视频| 亚洲日本在线天堂| 日韩福利视频导航| 国产精品一区二区三区网站| 国产91精品一区二区| 99re热视频精品| 欧美日韩国产首页| 精品福利视频一区二区三区| 亚洲国产精品成人综合| 亚洲综合av网| 久久97超碰色| 91蜜桃婷婷狠狠久久综合9色| 欧美日韩国产片| 欧美精品一区二区久久久| 国产精品国模大尺度视频| 亚洲伊人伊色伊影伊综合网| 美女免费视频一区| 91网站黄www| 日韩欧美一二三| 日韩理论片在线| 精品一区二区三区香蕉蜜桃| 99久久婷婷国产精品综合| 91精品国产综合久久久久| 国产亚洲成av人在线观看导航| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美电影免费提供在线观看| 国产精品久久久久久亚洲毛片| 亚洲成a人片在线不卡一二三区| 国产一二三精品| 欧美人xxxx|