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

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

?? ado.cpp

?? VC++ 6.0開發(fā)。之中打印部分可能對您有值得參考的地方。其他的部分還不是很完善
?? 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>

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

/*########################################################################
			  ------------------------------------------------
							    數(shù)值類型轉換
			  ------------------------------------------------
  ########################################################################*/
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: //小數(shù)
		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 構造/析構函數(shù)
			 ------------------------------------------------
  ########################################################################*/

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

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

/*========================================================================
	Name:		連接到數(shù)據(jù)源.
	-----------------------------------------------------
	Params:		[lpszConnect]: 連接字符串, 包含連接信息.
				[lOptions]:	可選. 決定該方法是以同步還是異步的方式連接數(shù)據(jù)
						源. 可以是如下某個常量:
		[常量]					[說明] 
		----------------------------------
		adConnectUnspecified	(默認)同步方式打開連接. 
		adAsyncConnect			異步方式打開連接. Ado用 ConnectComplete 事
						件來通知已經(jīng)完成連接. 
==========================================================================*/
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
	{
		// 連接數(shù)據(jù)庫 ---------------------------------------------
		return (m_pConnection->Open(_bstr_t(LPCTSTR(m_strConnect)), "", "", lOptions) == S_OK);
	}
	catch (_com_error e)
	{
		TRACE(_T("Warning: 連接數(shù)據(jù)庫發(fā)生異常. 錯誤信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		TRACE(_T("%s\r\n"), GetLastErrorText());
		return FALSE;
	} 
	catch (...)
	{
		TRACE(_T("Warning: 連接數(shù)據(jù)庫時發(fā)生未知錯誤:"));
	}
	return FALSE;
}

/*========================================================================
	Name:	連接 SQL SERVER 數(shù)據(jù)庫. 
	-----------------------------------------------------
	Params:		[dbsrc]:	SQL SERVER 服務器名.
				[dbname]:	默認的數(shù)據(jù)庫名.
				[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 數(shù)據(jù)庫. 
	-----------------------------------------------------
	Params:		[dbpath]:	MDB 數(shù)據(jù)庫文件路徑名.
				[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 文件連接數(shù)據(jù)庫. 
	-----------------------------------------------------
	Params:		[strFileName]:	UDL 數(shù)據(jù)庫連接文件路徑名.
==========================================================================*/
BOOL CAdoConnection::OpenUDLFile(LPCTSTR strFileName, long lOptions)
{
	CString strConnect = _T("File Name=");
	strConnect += strFileName;
	return Open(LPCTSTR(strConnect), lOptions);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
eeuss影院一区二区三区| 久久se这里有精品| 色88888久久久久久影院按摩| 国产精品无遮挡| 成人a级免费电影| 玉米视频成人免费看| 欧美午夜片在线看| 日本亚洲电影天堂| 精品成人一区二区三区| 国产成人精品一区二| 亚洲人成精品久久久久久| 欧美午夜电影网| 久久精品国产一区二区| 国产午夜精品久久| 91麻豆免费视频| 天天色天天操综合| 久久久精品综合| 99国产精品久久久久久久久久| 一区二区高清视频在线观看| 91精品蜜臀在线一区尤物| 国产美女精品人人做人人爽| 亚洲乱码日产精品bd| 666欧美在线视频| 高清国产午夜精品久久久久久| 亚洲综合色在线| 久久午夜色播影院免费高清 | 亚洲欧美日韩国产中文在线| 欧美日韩久久不卡| 成人精品gif动图一区| 亚洲不卡在线观看| 久久久99精品免费观看不卡| 日本精品一区二区三区高清 | 欧美日韩免费一区二区三区视频 | 日韩精品一二区| 国产精品嫩草影院com| 欧美福利电影网| 波多野结衣视频一区| 日本欧美加勒比视频| 国内精品国产成人国产三级粉色| 国产精品国产a级| 精品国产在天天线2019| 欧美影院一区二区| 成人97人人超碰人人99| 久久99精品久久久久久动态图| 亚洲一区二区三区四区五区黄| 26uuu久久天堂性欧美| 欧美日韩你懂得| 色成年激情久久综合| 日韩精品乱码免费| 久久久不卡网国产精品一区| 亚洲精品视频自拍| 亚洲色图另类专区| 91视频国产观看| 秋霞成人午夜伦在线观看| 久久久久久久久免费| 香蕉成人啪国产精品视频综合网 | 成人免费毛片app| 极品少妇一区二区三区精品视频 | 日韩精品国产精品| 亚洲精品成人在线| 中文字幕在线观看不卡| 精品日韩99亚洲| 7777精品伊人久久久大香线蕉完整版| 91在线国内视频| 成人福利电影精品一区二区在线观看| 免费在线欧美视频| 日韩精品视频网| 日韩精品一级二级| 婷婷综合五月天| 亚洲大片在线观看| 午夜国产精品一区| 丝袜美腿一区二区三区| 天堂久久久久va久久久久| 亚洲自拍另类综合| 一区二区免费在线播放| 中文字幕一区免费在线观看| 久久伊人中文字幕| 久久久三级国产网站| 久久美女艺术照精彩视频福利播放| 精品美女被调教视频大全网站| 在线综合视频播放| 日韩免费性生活视频播放| 欧美一区二区三区免费视频| 欧美日韩国产一区| 91精品久久久久久久99蜜桃| 日韩一区二区三区四区五区六区| 91精品一区二区三区久久久久久| 欧美日韩视频在线第一区| 4438x成人网最大色成网站| 在线成人av影院| 日韩欧美国产精品一区| 欧美蜜桃一区二区三区| 国产美女在线精品| 日本欧美在线观看| 精品在线观看免费| 国产高清在线观看免费不卡| 成人va在线观看| 欧美在线免费视屏| 337p亚洲精品色噜噜狠狠| 精品黑人一区二区三区久久 | 亚洲高清视频在线| 石原莉奈在线亚洲三区| 国产在线麻豆精品观看| www.66久久| 欧美日韩国产乱码电影| 欧美www视频| 国产精品拍天天在线| 亚洲美女偷拍久久| 麻豆国产精品777777在线| 国产高清亚洲一区| 99re66热这里只有精品3直播 | 国产精品久99| 亚洲国产日韩在线一区模特 | 国产乱子伦一区二区三区国色天香| 国产裸体歌舞团一区二区| 91丝袜美女网| 日韩视频在线永久播放| 国产精品久久久久天堂| 日韩在线播放一区二区| 国产传媒日韩欧美成人| 一本色道亚洲精品aⅴ| 日韩无一区二区| 亚洲天堂免费看| 青青草国产精品亚洲专区无| www.日韩在线| 日韩欧美一卡二卡| 亚洲综合免费观看高清完整版在线 | 日日夜夜一区二区| 成人综合日日夜夜| 日韩一级大片在线| 亚洲精品乱码久久久久久黑人 | 国产精品视频免费看| 天堂午夜影视日韩欧美一区二区| 成人毛片视频在线观看| 91精品国产福利在线观看 | 亚洲高清免费视频| 成人动漫精品一区二区| 亚洲精品一区二区三区香蕉 | 精品99一区二区三区| 亚洲最新视频在线观看| 国产盗摄一区二区| 日韩欧美高清dvd碟片| 一区二区三区av电影| 国产福利一区二区三区视频在线| 欧美性生活久久| 国产精品全国免费观看高清| 激情五月婷婷综合| 91精品免费观看| 午夜国产精品影院在线观看| 91亚洲精品一区二区乱码| 国产日产欧产精品推荐色 | 91蝌蚪porny九色| 欧美激情中文字幕| 精品一区二区三区免费| 欧美一区二区三区男人的天堂| 亚洲一级不卡视频| 色婷婷av一区二区三区gif| 国产精品色一区二区三区| 国产一区二区三区不卡在线观看 | 日本一区中文字幕 | 久久色在线视频| 九九**精品视频免费播放| 欧美videossexotv100| 美女www一区二区| 日韩三级伦理片妻子的秘密按摩| 日韩高清欧美激情| 欧美精选一区二区| 免费观看一级特黄欧美大片| 欧美一区二区三区四区高清| 免费在线看一区| 亚洲精品在线观看网站| 国产一区二区精品在线观看| 国产亚洲精品福利| a美女胸又www黄视频久久| 亚洲男人电影天堂| 欧美视频在线播放| 午夜精品视频一区| 91精品福利在线一区二区三区| 美女尤物国产一区| 久久久久久久综合日本| 成人一区二区三区中文字幕| 国产精品九色蝌蚪自拍| 在线免费观看日韩欧美| 亚洲超丰满肉感bbw| 日韩欧美在线网站| 久久精品国产99| 337p粉嫩大胆噜噜噜噜噜91av| 国产成人一区二区精品非洲| 欧美激情一二三区| 色八戒一区二区三区| 午夜精品福利一区二区蜜股av| 欧美精品色综合| 国产九九视频一区二区三区| 国产精品国产三级国产三级人妇 | 高清不卡一区二区在线| 亚洲精品一二三| 欧美日韩国产首页| 国产麻豆视频一区| 1000部国产精品成人观看| 欧美日韩大陆一区二区|