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

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

?? ado.cpp

?? VC++6.0基于CAN協議的車輛控制
?? 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 "ADO.h"
#include <math.h>
#include "StdioFileEx.h"

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

/*########################################################################
			  ------------------------------------------------
							    數值類型轉換
			  ------------------------------------------------
  ########################################################################*/
COleDateTime vartodate(const _variant_t& var)
{
	COleDateTime value;
	switch (var.vt) 
	{
	case VT_DATE:
		{
			value = var.date;
		}
		break;
	case VT_EMPTY:
	case VT_NULL:
		value.SetStatus(COleDateTime::null);
		break;
	default:
		value.SetStatus(COleDateTime::null);
		TRACE(_T("Warning: 未處理的 _variant_t 類型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__);
	}
	return value;
}

COleCurrency vartocy(const _variant_t& var)
{
	COleCurrency value;
	switch (var.vt) 
	{
	case VT_CY:
		value = (CURRENCY)var.cyVal;
		break;
	case VT_EMPTY:
	case VT_NULL:
		value.m_status = COleCurrency::null;
		break;
	default:
		value.m_status = COleCurrency::null;
		TRACE(_T("Warning: 未處理的 _variant_t 類型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__);
	}
	return value;
}

bool vartobool(const _variant_t& var)
{
	bool value = false;
	switch (var.vt)
	{
	case VT_BOOL:
		value = var.boolVal ? true : false;
	case VT_EMPTY:
	case VT_NULL:
		break;
	default:
		TRACE(_T("Warning: 未處理的 _variant_t 類型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__);
	}
	return value;
}

BYTE vartoby(const _variant_t& var)
{
	BYTE value = 0;
	switch (var.vt)
	{
	case VT_I1:
	case VT_UI1:
		value = var.bVal;
		break;
	case VT_NULL:
	case VT_EMPTY:
		value = 0;
		break;
	default:
		TRACE(_T("Warning: 未處理的 _variant_t 類型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__);
	}	
	return value;
}

short vartoi(const _variant_t& var)
{
	short value = 0;
	switch (var.vt)
	{
	case VT_BOOL:
		value = var.boolVal;
		break;
	case VT_UI1:
	case VT_I1:
		value = var.bVal;
		break;
	case VT_I2:
	case VT_UI2:
		value = var.iVal;
		break;
	case VT_NULL:
	case VT_EMPTY:
		value = 0;
		break;
	default:
		TRACE(_T("Warning: 未處理的 _variant_t 類型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__);
	}	
	return value;
}

long vartol(const _variant_t& var)
{
	long value = 0;
	switch (var.vt)
	{
	case VT_BOOL:
		value = var.boolVal;
		break;
	case VT_UI1:
	case VT_I1:
		value = var.bVal;
		break;
	case VT_UI2:
	case VT_I2:
		value = var.iVal;
		break;
	case VT_I4:
	case VT_UI4:
		value = var.lVal;
		break;
	case VT_INT:
		value = var.intVal;
		break;
	case VT_R4:
		value = (long)(var.fltVal + 0.5);
		break;
	case VT_R8:
		value = (long)(var.dblVal + 0.5);
		break;
	case VT_DECIMAL:
		value = (long)var;
		break;
	case VT_CY:
		value = (long)var;
		break;
	case VT_BSTR://字符串
	case VT_LPSTR://字符串
	case VT_LPWSTR://字符串
		value = atol((LPCTSTR)(_bstr_t)var);
		break;
	case VT_NULL:
	case VT_EMPTY:
		value = 0;
		break;
	default:
		TRACE(_T("Warning: 未處理的 _variant_t 類型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__);
	}
	return value;
}

double vartof(const _variant_t& var)
{
	double value = 0;
	switch (var.vt)
	{
	case VT_R4:
		value = var.fltVal;
		break;
	case VT_R8:
		value = var.dblVal;
		break;
	case VT_DECIMAL:
		value = (double)var;
		break;
	case VT_CY:
		value = (double)var;
		break;
	case VT_BOOL:
		value = var.boolVal;
		break;
	case VT_UI1:
	case VT_I1:
		value = var.bVal;
		break;
	case VT_UI2:
	case VT_I2:
		value = var.iVal;
		break;
	case VT_UI4:
	case VT_I4:
		value = var.lVal;
		break;
	case VT_INT:
		value = var.intVal;
		break;
	case VT_BSTR://字符串
	case VT_LPSTR://字符串
	case VT_LPWSTR://字符串
		value = atof((LPCTSTR)(_bstr_t)var);
		break;
	case VT_NULL:
	case VT_EMPTY:
		value = 0;
		break;
	default:
		value = 0;
		TRACE(_T("Warning: 未處理的 _variant_t 類型值; 文件: %s; 行: %d\n"), __FILE__, __LINE__);
	}
	return value;
}

CString vartostr(const _variant_t &var)
{
	CString strValue;
	
	switch (var.vt)
	{
	case VT_BSTR://字符串
	case VT_LPSTR://字符串
	case VT_LPWSTR://字符串
		strValue = (LPCTSTR)(_bstr_t)var;
		break;
	case VT_I1:
	case VT_UI1:
		strValue.Format("%d", var.bVal);
		break;
	case VT_I2://短整型
		strValue.Format("%d", var.iVal);
		break;
	case VT_UI2://無符號短整型
		strValue.Format("%d", var.uiVal);
		break;
	case VT_INT://整型
		strValue.Format("%d", var.intVal);
		break;
	case VT_I4: //整型
		strValue.Format("%d", var.lVal);
		break;
	case VT_I8: //長整型
		strValue.Format("%d", var.lVal);
		break;
	case VT_UINT://無符號整型
		strValue.Format("%d", var.uintVal);
		break;
	case VT_UI4: //無符號整型
		strValue.Format("%d", var.ulVal);
		break;
	case VT_UI8: //無符號長整型
		strValue.Format("%d", var.ulVal);
		break;
	case VT_VOID:
		strValue.Format("%8x", var.byref);
		break;
	case VT_R4://浮點型
		strValue.Format("%.4f", var.fltVal);
		break;
	case VT_R8://雙精度型
		strValue.Format("%.8f", var.dblVal);
		break;
	case VT_DECIMAL: //小數
		strValue.Format("%.8f", (double)var);
		break;
	case VT_CY:
		{
			COleCurrency cy = var.cyVal;
			strValue = cy.Format();
		}
		break;
	case VT_BLOB:
	case VT_BLOB_OBJECT:
	case 0x2011:
		strValue = "[BLOB]";
		break;
	case VT_BOOL://布爾型

		strValue = var.boolVal ? "TRUE" : "FALSE";
		break;
	case VT_DATE: //日期型
		{
			DATE dt = var.date;
			COleDateTime da = COleDateTime(dt); 
			strValue = da.Format("%Y-%m-%d %H:%M:%S");
		}
		break;
	case VT_NULL://NULL值
		strValue = "";
		break;
	case VT_EMPTY://空
		strValue = "";
		break;
	case VT_UNKNOWN://未知類型
	default:
		strValue = "UN_KNOW";
		break;
	}
	return strValue;
}

/*########################################################################
			 ------------------------------------------------
					CAdoConnection class 構造/析構函數
			 ------------------------------------------------
  ########################################################################*/

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

CAdoConnection::~CAdoConnection()
{
	if (m_pConnection != NULL)
	{
		Release();
	}
}

/*========================================================================
	Name:		連接到數據源.
	-----------------------------------------------------
	Params:		[lpszConnect]: 連接字符串, 包含連接信息.
				[lOptions]:	可選. 決定該方法是以同步還是異步的方式連接數據
						源. 可以是如下某個常量:
		[常量]					[說明] 
		----------------------------------
		adConnectUnspecified	(默認)同步方式打開連接. 
		adAsyncConnect			異步方式打開連接. Ado用 ConnectComplete 事
						件來通知已經完成連接. 
==========================================================================*/
BOOL CAdoConnection::Open(LPCTSTR lpszConnect, long lOptions)
{
	ASSERT(m_pConnection != NULL);
	ASSERT(AfxIsValidString(lpszConnect));
	
	if (strcmp(lpszConnect, _T("")) != 0)
	{
		m_strConnect = lpszConnect;
	}

	if (m_strConnect.IsEmpty())
	{
		ASSERT(FALSE);
		return FALSE;
	}

	if (IsOpen()) Close();

	try
	{
		// 連接數據庫 ---------------------------------------------
		return (m_pConnection->Open(_bstr_t(LPCTSTR(m_strConnect)), "", "", lOptions) == S_OK);
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: 連接數據庫發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		TRACE(_T("%s\r\n"), GetLastErrorText());
		return FALSE;
	} 
	catch (...)
	{
		TRACE(_T("Warning: 連接數據庫時發生未知錯誤:"));
	}
	return FALSE;
}

/*========================================================================
	Name:	連接 SQL SERVER 數據庫. 
	-----------------------------------------------------
	Params:		[dbsrc]:	SQL SERVER 服務器名.
				[dbname]:	默認的數據庫名.
				[user]:		用戶名.
				[pass]:		密碼.
==========================================================================*/
BOOL CAdoConnection::ConnectSQLServer(CString dbsrc, CString dbname, CString user, CString pass, long lOptions)
{
	CString strConnect = _T("Provider=SQLOLEDB.1; Data Source=") + dbsrc + 
						 _T("; Initial Catalog=") + dbname  +
						 _T("; User ID=") + user + 
						 _T("; PWD=") + pass;
	return Open(LPCTSTR(strConnect), lOptions);
}

/*========================================================================
	Name:	連接 ACCESS 數據庫. 
	-----------------------------------------------------
	Params:		[dbpath]:	MDB 數據庫文件路徑名.
				[pass]:		訪問密碼.
===========================================================================*/
BOOL CAdoConnection::ConnectAccess(CString dbpath, CString pass, long lOptions)
{
	CString strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=") + dbpath;
	if (pass != _T("")) 
	{
		strConnect += _T(";Jet OLEDB:Database Password=") + pass + _T(";");
	}
	return Open(LPCTSTR(strConnect), lOptions);
}

/*========================================================================
	Name:	通過 udl 文件連接數據庫. 
	-----------------------------------------------------
	Params:		[strFileName]:	UDL 數據庫連接文件路徑名.
==========================================================================*/
BOOL CAdoConnection::OpenUDLFile(LPCTSTR strFileName, long lOptions)
{
	CString strConnect = _T("File Name=");
	strConnect += strFileName;
	return Open(LPCTSTR(strConnect), lOptions);
}

/*========================================================================
	Name:	關閉與數據源的連接.
	-----------------------------------------------------
	Remarks: 使用 Close 方法可關閉 Connection 對象以便釋放所有關聯的系統資源. 
==========================================================================*/
void CAdoConnection::Close()
{
	try
	{
		if (m_pConnection != NULL && IsOpen()) 
		{
			m_pConnection->Close();
		}
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: 關閉數據庫發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
	} 
}

/*========================================================================
	Name:	關閉連接并釋放對象.
	-----------------------------------------------------
	Remarks: 關閉連接并釋放connection對象.
==========================================================================*/
void CAdoConnection::Release()
{
	if (IsOpen()) Close();
	m_pConnection.Release();
}

/*========================================================================
	Name:		執行指定的查詢、SQL 語句、存儲過程等.
    ----------------------------------------------------------
	Remarks:	請參考 CAdoRecordSet 類的Open方法. 返回的 Recordset 對象始
			終為只讀、僅向前的游標.
==========================================================================*/
_RecordsetPtr CAdoConnection::Execute(LPCTSTR lpszSQL, long lOptions)
{
	ASSERT(m_pConnection != NULL);
	ASSERT(AfxIsValidString(lpszSQL));

	try
	{
		return m_pConnection->Execute(_bstr_t(lpszSQL), NULL, lOptions);
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: Execute 方法發生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		return FALSE;
	} 
	return FALSE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区不卡| 欧美人妇做爰xxxⅹ性高电影| 91精品国产综合久久蜜臀| 日韩精彩视频在线观看| 国产农村妇女毛片精品久久麻豆| 91麻豆免费视频| 激情五月播播久久久精品| 一区二区在线观看av| 久久久99久久| 91麻豆精品91久久久久同性| 91在线小视频| 国产成人精品亚洲日本在线桃色| 三级不卡在线观看| 亚洲九九爱视频| 国产精品嫩草影院av蜜臀| 精品久久人人做人人爰| 欧美卡1卡2卡| 欧美综合色免费| fc2成人免费人成在线观看播放| 美女www一区二区| 午夜视频在线观看一区二区三区| 国产精品女同一区二区三区| 欧美精品一区二区三区一线天视频| 欧美丝袜丝nylons| 91麻豆精品在线观看| 国产成人精品免费一区二区| 精品一区二区三区免费播放 | 欧美老女人第四色| 99精品视频在线免费观看| 国模冰冰炮一区二区| 另类调教123区| 日本在线播放一区二区三区| 亚洲一区在线电影| 亚洲精品成人悠悠色影视| 中文字幕日韩一区| 国产精品蜜臀在线观看| 欧美激情在线免费观看| 中文文精品字幕一区二区| 国产日产欧美一区二区视频| 亚洲精品一区二区三区精华液| 精品成人免费观看| 久久亚洲免费视频| 国产日韩精品视频一区| 国产精品丝袜久久久久久app| 亚洲国产精品黑人久久久| 欧美极品美女视频| 国产精品乱码久久久久久| 中文字幕亚洲不卡| 亚洲欧美另类图片小说| 一区二区三区四区中文字幕| 亚洲国产日产av| 三级影片在线观看欧美日韩一区二区 | 成人免费的视频| av不卡在线观看| 欧洲人成人精品| 在线综合视频播放| 精品国产一区二区三区忘忧草| 精品播放一区二区| 国产精品美女久久久久久久网站| 亚洲视频一二区| 五月天国产精品| 精品午夜久久福利影院| 国产精品小仙女| 色狠狠综合天天综合综合| 欧美日韩在线播放三区四区| 日韩欧美一级二级三级| 国产三级欧美三级日产三级99| 中文字幕一区二区不卡| 亚洲国产精品精华液网站| 麻豆精品久久精品色综合| 国产99精品国产| 欧美在线一区二区三区| 日韩亚洲欧美在线| 日本一区二区三区免费乱视频| 亚洲欧美日韩国产另类专区 | 国产91露脸合集magnet| 色综合久久99| 欧美一区二区三区在线观看视频| 国产日韩精品一区二区三区 | hitomi一区二区三区精品| 欧美日韩国产影片| 欧美mv日韩mv国产| 亚洲欧美日韩系列| 精品一区免费av| 色天使色偷偷av一区二区| 日韩欧美国产电影| 亚洲色大成网站www久久九九| 日韩国产欧美视频| 国产成人av电影在线观看| 欧美日韩mp4| 国产精品麻豆久久久| 图片区小说区区亚洲影院| 成人蜜臀av电影| 欧美一级夜夜爽| 亚洲码国产岛国毛片在线| 精品在线一区二区| 欧美色图12p| 亚洲免费在线电影| 另类小说综合欧美亚洲| 色婷婷av久久久久久久| 欧美国产日韩在线观看| 免费成人小视频| 欧美日韩一二区| 国产精品久久免费看| 精品一区二区三区免费观看| 欧美怡红院视频| 中文字幕中文字幕一区二区| 久久er精品视频| 欧美精品一级二级| 亚洲精品一卡二卡| www.日韩av| 国产欧美精品一区aⅴ影院| 美女视频网站久久| 欧美日韩国产一区| 亚洲欧美日韩中文字幕一区二区三区| 国产精品夜夜爽| 精品粉嫩aⅴ一区二区三区四区| 亚洲成av人综合在线观看| 91一区二区在线观看| 国产精品免费免费| 国产电影精品久久禁18| 精品国产髙清在线看国产毛片| 三级一区在线视频先锋| 欧美日韩精品系列| 亚洲精品亚洲人成人网| 色综合久久天天| 亚洲三级理论片| av激情亚洲男人天堂| 国产精品萝li| 93久久精品日日躁夜夜躁欧美| 中文av一区特黄| 不卡免费追剧大全电视剧网站| 欧美国产精品专区| 成人做爰69片免费看网站| 欧美国产日韩精品免费观看| 成人av中文字幕| 国产精品久久一卡二卡| 成人av手机在线观看| 国产精品三级电影| 91在线一区二区三区| 一区二区三区视频在线看| 色婷婷av一区二区三区软件 | 秋霞影院一区二区| 欧美一区二区三区播放老司机| 日韩av中文在线观看| 欧美大片日本大片免费观看| 精品无人码麻豆乱码1区2区 | 中文字幕在线播放不卡一区| www.成人在线| 一区二区久久久| 欧美日韩精品欧美日韩精品一 | 日本不卡中文字幕| 精品卡一卡二卡三卡四在线| 国产a视频精品免费观看| 国产精品久久久久久久久久免费看| 9色porny自拍视频一区二区| 亚洲黄色尤物视频| 欧美美女一区二区| 老鸭窝一区二区久久精品| 26uuu另类欧美亚洲曰本| 成人av网站免费| 亚洲国产日韩a在线播放性色| 日韩午夜在线影院| 福利视频网站一区二区三区| 亚洲精品国产一区二区精华液| 911精品国产一区二区在线| 国模套图日韩精品一区二区| 国产精品久久久久aaaa樱花| 欧美日韩综合不卡| 韩国精品久久久| 亚洲视频免费在线观看| 在线电影一区二区三区| 国产精品一区免费在线观看| 亚洲欧美日韩国产成人精品影院| 欧美一区二区精品在线| 国产精品88888| 亚洲福中文字幕伊人影院| 欧美精品一区二区高清在线观看| 91麻豆免费视频| 激情文学综合丁香| 一区二区三区久久久| 精品国产乱码久久久久久久| 色综合久久久久网| 久色婷婷小香蕉久久| 亚洲免费观看高清完整版在线| 欧美一级xxx| 色综合激情久久| 国产成人三级在线观看| 午夜av一区二区三区| 国产日产亚洲精品系列| 91精品国产综合久久香蕉的特点 | 日韩欧美精品三级| 色综合天天综合狠狠| 国模娜娜一区二区三区| 亚洲国产一区二区视频| 亚洲激情第一区| 国产三级精品视频| 欧美一区二区视频网站| 91免费在线视频观看| 国产精品1区2区|