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

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

?? adocommand.cpp

?? ADO 數據庫編程 用ACCESS 數據庫系統
?? 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一区二区三区免费野_久草精品视频
无吗不卡中文字幕| 国产日韩欧美不卡| 午夜国产精品一区| 欧美精品123区| 欧美aaaaa成人免费观看视频| 91精品国产乱码| 免费高清成人在线| 国产日韩欧美不卡| 色综合久久久久网| 看电视剧不卡顿的网站| 欧美日韩国产首页| 欧美亚洲一区二区在线观看| 欧美日韩精品欧美日韩精品一综合| 色欧美乱欧美15图片| 777奇米成人网| 国产亚洲综合在线| 一区二区三区在线高清| 欧美日韩国产另类不卡| 久久一夜天堂av一区二区三区| 国产精品一区二区男女羞羞无遮挡 | 国产在线精品一区二区不卡了| 久久久.com| 日本高清免费不卡视频| 捆绑紧缚一区二区三区视频| 18成人在线视频| 欧美精品久久天天躁| 国产精品亚洲成人| 亚洲综合在线免费观看| ww亚洲ww在线观看国产| 91福利视频网站| 国产在线精品一区二区夜色| 亚洲精选视频免费看| 久久亚洲欧美国产精品乐播| 91在线播放网址| 极品少妇一区二区| 亚洲韩国精品一区| 日本一区二区视频在线| 91精品国产综合久久精品app| 丁香啪啪综合成人亚洲小说 | 亚洲精品午夜久久久| 日韩一区二区三区在线| 91无套直看片红桃| 精品一区二区三区在线观看| 亚洲影院理伦片| 中文一区二区完整视频在线观看| 5858s免费视频成人| 91丨九色丨尤物| 国产精品中文字幕一区二区三区| 日韩精品亚洲专区| 一区二区三区日韩| 国产精品午夜久久| 久久久精品黄色| 2欧美一区二区三区在线观看视频| 欧美日韩色一区| 色综合天天性综合| 成人免费视频一区| 国产成人自拍高清视频在线免费播放| 午夜视频在线观看一区| 亚洲精品免费播放| 亚洲乱码一区二区三区在线观看| 亚洲国产成人在线| 中文字幕成人网| 中文字幕乱码亚洲精品一区| 久久一区二区三区国产精品| 日韩精品一区二区在线观看| 欧美美女黄视频| 欧美欧美欧美欧美| 欧美老肥妇做.爰bbww视频| 在线一区二区三区| 色噜噜狠狠成人中文综合| 成人免费黄色大片| 成人免费视频一区| 91最新地址在线播放| av一二三不卡影片| 99re成人在线| 在线观看91精品国产入口| 91久久精品一区二区三| 在线看日本不卡| 欧美日韩dvd在线观看| 欧美高清视频不卡网| 7777精品久久久大香线蕉| 欧美精品1区2区3区| 欧美一级片在线| 日韩欧美亚洲一区二区| 精品sm捆绑视频| 国产日韩欧美a| 国产精品久久久久久久久晋中| 国产精品进线69影院| 亚洲免费资源在线播放| 伊人色综合久久天天| 亚洲va韩国va欧美va| 免费一区二区视频| 国产美女精品在线| 91在线视频网址| 欧美日韩一区二区三区四区| 69堂精品视频| 国产欧美一区视频| 亚洲视频综合在线| 亚洲3atv精品一区二区三区| 蜜臀av亚洲一区中文字幕| 韩国一区二区在线观看| proumb性欧美在线观看| 欧美三级视频在线观看| 日韩欧美国产综合一区| 欧美国产乱子伦| 亚洲丰满少妇videoshd| 麻豆成人91精品二区三区| 福利电影一区二区| 欧美日免费三级在线| 26uuu亚洲婷婷狠狠天堂| 日韩理论片中文av| 奇米四色…亚洲| 大陆成人av片| 欧美日韩国产电影| 欧美激情一区二区三区蜜桃视频| 亚洲成在线观看| 国产精品一级在线| 欧美天堂亚洲电影院在线播放| 精品国产1区二区| 亚洲另类春色校园小说| 国内精品伊人久久久久av影院 | 精品污污网站免费看| 久久综合九色综合欧美就去吻| 亚洲免费观看高清完整版在线观看| 青青草伊人久久| 欧美亚洲高清一区二区三区不卡| 久久美女高清视频| 午夜精品福利久久久| av午夜一区麻豆| 2020国产精品| 偷拍自拍另类欧美| 不卡视频在线看| 久久丝袜美腿综合| 视频一区在线视频| 97se亚洲国产综合自在线不卡| 欧美电影免费观看高清完整版在线| 亚洲精品国产无套在线观| 国产一区二区导航在线播放| 欧美喷水一区二区| 亚洲久本草在线中文字幕| 国产精品12区| 欧美电影免费观看完整版| 亚洲国产精品一区二区久久| aaa亚洲精品一二三区| 久久天天做天天爱综合色| 蜜桃传媒麻豆第一区在线观看| 在线一区二区三区| 轻轻草成人在线| 欧美日韩美少妇| 亚洲乱码中文字幕| a亚洲天堂av| 国产精品美女久久久久aⅴ | 欧美亚洲一区二区在线| 国产精品传媒入口麻豆| 国产成人夜色高潮福利影视| 精品精品欲导航| 久久99精品久久久久婷婷| 91麻豆精品国产91久久久使用方法| 夜夜夜精品看看| 91黄色激情网站| 亚洲日本免费电影| 91网址在线看| 一区二区三区在线影院| 91猫先生在线| 亚洲自拍偷拍网站| 91视视频在线观看入口直接观看www| 国产精品国产三级国产普通话99 | 亚洲日本成人在线观看| 91在线丨porny丨国产| 亚洲精品写真福利| 精品视频一区 二区 三区| 亚洲色欲色欲www在线观看| 97超碰欧美中文字幕| 亚洲男人的天堂一区二区| 色一区在线观看| 一区二区三区四区不卡在线| 欧美特级限制片免费在线观看| 亚洲影院在线观看| 制服.丝袜.亚洲.中文.综合| 美女视频网站久久| 久久尤物电影视频在线观看| 国产麻豆成人传媒免费观看| 日本一区免费视频| 9久草视频在线视频精品| 1000部国产精品成人观看| 欧美亚洲精品一区| 日韩电影在线观看网站| 日韩精品一区二区三区老鸭窝| 国产一区二区在线观看免费 | 成人av网在线| 亚洲综合一二区| 欧美一区二区三区精品| 狠狠狠色丁香婷婷综合激情| 亚洲欧洲日产国产综合网| 色av成人天堂桃色av| 日韩精品高清不卡| 久久免费国产精品| 日本久久一区二区| 日本在线播放一区二区三区| 久久亚洲精华国产精华液|