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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cpingdatabase.h

?? 信息提醒小秘書軟件的源代碼
?? H
字號(hào):
//版權(quán)有所:李巧平    2003年1月份  電子郵件:liqiaoping@163.com  個(gè)人主頁:http://mengyuworkroom.y365.com  QQ:5542376
//封裝類CPingDatabase是操作數(shù)據(jù)庫的類,能插入、修改、查看、刪除ACCESS數(shù)據(jù)庫、SQLSERVER及所有的ODBC得用數(shù)據(jù)源來連接的數(shù)據(jù)庫。
//以下代碼在VC++6.0 ON WINDOWS2000 Professional上測(cè)試通過


//使用來類時(shí)出現(xiàn)一個(gè)警告,不用管它,那是微軟的一個(gè)動(dòng)態(tài)的原因。
//說明,以下方法返回值都為int型,具體含義如下列表:
//  正常:操作的實(shí)際記錄數(shù)
//  -1  :成功
//  -10 :失敗
//  -5 :參數(shù)類型不符合要求
//  -6 :未初始化
//  -7 :數(shù)據(jù)庫未連接
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
class CPingDatabase{
public:
	_ConnectionPtr	m_pConnection;

	//初始化組件,成功為1,失敗為-5
	//只能初始化一次,否敗會(huì)出錯(cuò)。
	int	_init()
	{
		return AfxOleInit()>0 ? -1:-10;
	}

	//連接數(shù)據(jù)庫,type支持file和odbc和sqlserver,且為小寫。為sqlserver時(shí),message項(xiàng)傳遞ip地址,source為庫
	int	_connectDatabase(char* type, char* source, char* user, char* password, char* message)
	{
		//先關(guān)閉連接
		_closeDatabase();
		try{	HRESULT	hr;
			CString	sql;
			if( strcmp( type, "file") == 0)
				sql.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s" ,source);
			else if( strcmp( type, "odbc")==0 )
				sql.Format("Data Source=%s;UID=%s;PWD=%s;",source, user, password);
			else if( strcmp( type, "sqlserver") == 0)
				sql.Format("driver={SQL Server};Server=%s;DATABASE=%s;UID=%s;PWD=%s", message, source, user, password);
			else
			{
				strcpy( message, "類型應(yīng)該為type,odbc,sqlserver其中一種。");
				return -5;
			}
			hr = this->m_pConnection.CreateInstance("ADODB.Connection");
			if(SUCCEEDED(hr))
			{
				if( strcmp( type, "file") == 0)
					hr = this->m_pConnection->Open( (_bstr_t)sql, "", "",adModeUnknown);//hr = this->m_pConnection->Open( (_bstr_t)sql, (_bstr_t)user, (_bstr_t)password,adModeUnknown);
				else
					hr = this->m_pConnection->Open( (_bstr_t)sql,"","",adModeUnknown);
			}
			else
			{
				strcpy( message, "為初始化組件");
				return -6;
			}
		}catch(_com_error e)
		{
			strcpy( message, e.ErrorMessage() );
			return -10;
		}
		strcpy( message, "成功連接數(shù)據(jù)庫!");
		return -1;
	}

	//通過到指定的表table中讀出符合條件wide,指定的字段Fields到Values中,返回操作記錄數(shù)
	int		_selectDataFromDatabase(char* tablename, char* wide, CStringArray* Fields, CStringArray* Values, int counts, char* message)
	{
		//檢查是否已經(jīng)連接
		if( !_checkDatabase() )
		{
			strcpy(message,"數(shù)據(jù)庫還沒有連接好,無效的數(shù)據(jù)操作!");
			return -7;
		}
		int i=0;
		try{	_RecordsetPtr	m_pRecordset;
			_variant_t	vTemp;
			//生成SQL語句
			CString		sql,temp;
			temp.Format("select ");
			for(i=0; i<Fields->GetSize(); i++)
				temp = temp + Fields->GetAt(i) +",";
			temp.TrimRight(",");
			sql.Format("%s from %s %s", temp, tablename, wide);
		
			m_pRecordset.CreateInstance("ADODB.Recordset");
			m_pRecordset->Open( (_variant_t)sql,_variant_t((IDispatch*)this->m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
			i=0;
			while( (!m_pRecordset->adoEOF) && (i < counts))
			{
				for(int j=0; j<Fields->GetSize(); j++)
				{
					vTemp = m_pRecordset->GetCollect(_variant_t( Fields->GetAt(j) ));
					if(vTemp.vt == VT_NULL)
						(Values+i)->Add("");
					else
						(Values+i)->Add((LPCTSTR)(_bstr_t)vTemp);
				}
				i++;
				m_pRecordset->MoveNext();
			}
			m_pRecordset->Close();
		}catch(_com_error e)
		{
			strcpy( message, e.ErrorMessage());
			return -10;
		}
		return i;
	}

	//成功插入,返回實(shí)際插入條數(shù)
	int		_insertDataToDatabase(char* tablename, CStringArray* Fields, CStringArray* Values, int counts, char* message)
	{
		//檢查是否已經(jīng)連接
		if( !_checkDatabase() )
		{
			strcpy(message,"數(shù)據(jù)庫還沒有連接好,無效的數(shù)據(jù)操作!");
			return -7;
		}
		int i=0;
		try{	_RecordsetPtr	m_pRecordset;
			_variant_t	vTemp;
			//生成SQL語句
			CString		sql;
			sql.Format("select * from %s",tablename);

			m_pRecordset.CreateInstance("ADODB.Recordset");
			m_pRecordset->Open( (_variant_t)sql,_variant_t((IDispatch*)this->m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
			for(i=0; i<counts; i++)
			{
				m_pRecordset->AddNew();
				for(int j=0; j<Fields->GetSize(); j++)
				{
					if( (Values+i)->GetAt(j).IsEmpty() || (Values+i)->GetAt(j)=="")
						vTemp.vt = VT_NULL;
					else
						vTemp = (_variant_t)(Values+i)->GetAt(j);
					m_pRecordset->PutCollect( (_variant_t)Fields->GetAt(j),  vTemp);
				}
			}
			m_pRecordset->AddNew();
//			m_pRecordset->Close();
		}catch(_com_error e)
		{
			strcpy( message, e.ErrorMessage());
			return -10;
		}
		return i;
	}

	//修改一組符合條件的數(shù)據(jù),成功則返回修改的數(shù)目,失敗為0,出錯(cuò)為-1,不支持修改數(shù)組型
	int 	_updateRecord(char* tablename,char* wide,  CStringArray *Fields, CStringArray *Values, int counts, char* message)
	{
		//檢查是否已經(jīng)連接
		if( !_checkDatabase() )
		{
			strcpy(message,"數(shù)據(jù)庫還沒有連接好,無效的數(shù)據(jù)操作!");
			return -7;
		}
		int i=0;
		try
		{	CString sql,temp;
			temp = "select ";
			for(int j=0;j< Fields->GetSize() ;j++)
				temp = temp + Fields->GetAt(j) + ",";
			temp.TrimRight(",");
			sql.Format("%s from %s %s", temp, tablename, wide);
			_RecordsetPtr m_pRecordset;
			m_pRecordset.CreateInstance("ADODB.Recordset");
			m_pRecordset->Open( (_variant_t)sql,_variant_t((IDispatch*)this->m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
			while( (!m_pRecordset->adoEOF) && (i < counts))///這里為什么是adoEOF而不是EOF呢?還記得rename("EOF","adoEOF")這一句嗎?
			{
				for(int j=0; j<Fields->GetSize(); j++)
					m_pRecordset->PutCollect(_variant_t( Fields->GetAt(j) ),_variant_t( Values->GetAt(j) ));//修改
				m_pRecordset->Update();///保存到庫中
				m_pRecordset->MoveNext();///移到下一條記錄
				i++;
			}
			m_pRecordset->Close();
		}catch(_com_error e)///捕捉異常
		{
			strcpy( message, e.ErrorMessage());
			return -10;
		}
		return i;
	}

	//刪除一組合條件的數(shù)據(jù),成功返回刪除的數(shù)目,失敗為0,出錯(cuò)為-1
	int 	_deleteRecord(char* tablename, char* wide, int counts, char* message)
	{
		//檢查是否已經(jīng)連接
		if( !_checkDatabase() )
		{
			strcpy( message,"數(shù)據(jù)庫還沒有連接好,無效的數(shù)據(jù)操作!");
			return -7;
		}
		int i=0;
		try
		{	CString sql;
			sql.Format("select * from %s %s",tablename,wide);
			_RecordsetPtr m_pRecordset;
			m_pRecordset.CreateInstance("ADODB.Recordset");
			m_pRecordset->Open( (_variant_t)sql,_variant_t((IDispatch*)this->m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
			while( (!m_pRecordset->adoEOF) && (i < counts))///這里為什么是adoEOF而不是EOF呢?還記得rename("EOF","adoEOF")這一句嗎?
			{
				m_pRecordset->Delete(adAffectCurrent);///刪除當(dāng)前記錄
				m_pRecordset->MoveNext();
				i++;
			}
			m_pRecordset->Close();
		}catch(_com_error e)///捕捉異常
		{
			strcpy( message,e.ErrorMessage());
			return -10;
		}
		return i;
	}

	//生存ID,若成功,則ID在message中,Field為數(shù)據(jù)插入日期字段
	int	_selectRecordId(char* tablename, char* Field, char* message)
	{
		//檢查是否已經(jīng)連接
		if( !_checkDatabase() )
		{
			strcpy(message,"數(shù)據(jù)庫還沒有連接好,無效的數(shù)據(jù)操作!");
			return -7;
		}
		CTime	nowtime = CTime::GetCurrentTime();
		CString temp = nowtime.Format(_T("%Y-%m-%d"));
		try{	_RecordsetPtr	m_pRecordset;
			_variant_t	vTemp;
			CString		sql;
			sql.Format("select count(*) from %s where %s like '%s%%'", tablename, Field, temp);
			m_pRecordset.CreateInstance("ADODB.Recordset");
			m_pRecordset->Open( (_variant_t)sql,_variant_t((IDispatch*)this->m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
			if(!m_pRecordset->adoEOF)
			{
				vTemp = m_pRecordset->GetCollect(_variant_t((long)0));
				if(vTemp.vt == VT_NULL)
					temp = "0";
				else
					temp = (LPCTSTR)(_bstr_t)vTemp;
			}
			m_pRecordset->Close();
			sql.Format("%6d",atoi(temp)+1);
			temp = nowtime.Format(_T("%Y%m%d"));
			temp = temp + sql;
			temp.Replace(" ","0");
		}catch(_com_error e)
		{
			strcpy( message, e.ErrorMessage());
			return -10;
		}
		strcpy( message, temp);
		return -1;
	}

	//讀出符合條件的記錄數(shù)
	int	_selectCountsFromDatabase(char* tablename, char* wide, char* message)
	{
		//檢查是否已經(jīng)連接
		if( !_checkDatabase() )
		{
			strcpy(message,"數(shù)據(jù)庫還沒有連接好,無效的數(shù)據(jù)操作!");
			return -7;
		}
		int i=0;
		try{	_RecordsetPtr	m_pRecordset;
			_variant_t	vTemp;
			CString		sql;
			sql.Format("select count(*) from %s %s", tablename, wide);
			m_pRecordset.CreateInstance("ADODB.Recordset");
			m_pRecordset->Open( (_variant_t)sql,_variant_t((IDispatch*)this->m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
			if(!m_pRecordset->adoEOF)
			{
				vTemp = m_pRecordset->GetCollect(_variant_t((long)0));
				if(vTemp.vt == VT_NULL)
					i = 0;
				else
					i = atoi( (LPCTSTR)(_bstr_t)vTemp);
			}
			m_pRecordset->Close();
		}catch(_com_error e)
		{
			strcpy( message, e.ErrorMessage());
			return -10;
		}
		return i;
	}

	//檢查數(shù)據(jù)庫是否已經(jīng)連接好
	bool	_checkDatabase()
	{
		//檢查是否已經(jīng)連接
		try
		{
			if((this->m_pConnection)->State)
				return true;
		}catch(...){;}
		return false;
	}

	//關(guān)閉數(shù)據(jù)庫
	void	_closeDatabase()
	{
		try
		{
			if((this->m_pConnection)->State)
				this->m_pConnection->Close(); ///如果已經(jīng)打開了連接則關(guān)閉它
		}catch(...){;}
	}
	
};

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产人妖系列| 国产综合色产在线精品| 欧美α欧美αv大片| 成人夜色视频网站在线观看| 亚洲一区二区三区视频在线 | 亚洲欧美激情在线| 欧美电影在哪看比较好| 国产91在线观看丝袜| 五月天国产精品| 中文字幕+乱码+中文字幕一区| 欧美日韩二区三区| 99久久99久久综合| 国产一区二区在线电影| 亚洲一区精品在线| 国产精品第一页第二页第三页| 日韩美女在线视频| 欧美视频一区二区| 92精品国产成人观看免费| 寂寞少妇一区二区三区| 婷婷久久综合九色综合绿巨人| 国产精品国产成人国产三级| 欧美精品一区二区高清在线观看| 欧美视频在线一区二区三区 | 久久精品夜夜夜夜久久| 欧美性大战久久| 99re视频精品| 国产91综合一区在线观看| 韩国三级中文字幕hd久久精品| 日韩精品高清不卡| 亚洲va韩国va欧美va| 亚洲视频1区2区| 中文字幕一区二区日韩精品绯色| 欧美精品一区二区高清在线观看 | 国产视频一区二区在线观看| 日韩亚洲欧美高清| 欧美女孩性生活视频| 欧美日韩久久不卡| 欧美视频中文字幕| 欧美日韩一区高清| 欧美三级韩国三级日本一级| 在线精品视频小说1| 色丁香久综合在线久综合在线观看| 国产精品99久久久久久久女警| 激情小说亚洲一区| 国产麻豆视频精品| 国产九色精品成人porny| 国产在线不卡一区| 国产在线看一区| 国产高清久久久久| 国产91丝袜在线观看| 国产激情视频一区二区在线观看| 精品一区二区三区香蕉蜜桃| 精品午夜一区二区三区在线观看| 久久精品72免费观看| 国产一区在线观看视频| 国产乱子伦视频一区二区三区 | 亚洲一区二区三区不卡国产欧美 | 一区二区三区四区在线免费观看| 亚洲人成精品久久久久久| 亚洲乱码一区二区三区在线观看| 亚洲女同一区二区| 亚洲高清免费在线| 久久er精品视频| 国产精品亚洲一区二区三区妖精| 国产精华液一区二区三区| 99视频有精品| 欧美三级三级三级| 精品国产免费久久| 中文字幕+乱码+中文字幕一区| 亚洲色图欧美偷拍| 天堂午夜影视日韩欧美一区二区| 蜜桃久久久久久| 国产成人精品亚洲午夜麻豆| 91女厕偷拍女厕偷拍高清| 欧美日韩精品福利| 久久女同性恋中文字幕| 最新国产成人在线观看| 亚洲v中文字幕| 国产精品系列在线观看| 在线看日本不卡| 精品国产乱码久久久久久浪潮| 国产精品久久影院| 无码av中文一区二区三区桃花岛| 国内精品久久久久影院色| 91麻豆精东视频| 日韩欧美一区二区久久婷婷| 国产精品久久久久久久久果冻传媒 | 一区二区三区美女视频| 久久精品国产99国产精品| 成人app软件下载大全免费| 欧美久久一二三四区| 国产日产欧产精品推荐色| 亚洲综合av网| 国产精品1区2区| 欧美美女喷水视频| 中文字幕一区二区三区色视频| 青青草97国产精品免费观看 | 99久免费精品视频在线观看| 欧美精品日日鲁夜夜添| 中文无字幕一区二区三区 | 五月天久久比比资源色| 成人午夜在线免费| 日韩一级高清毛片| 亚洲精品国产一区二区精华液| 蜜乳av一区二区| 色乱码一区二区三区88| 久久精品视频一区二区| 亚洲国产成人高清精品| 成人18视频日本| 精品成人一区二区三区四区| 亚洲国产一区二区三区青草影视| 高清不卡一区二区在线| 日韩欧美一级二级三级| 亚洲第一福利一区| 91色婷婷久久久久合中文| 国产午夜精品福利| 美国十次综合导航| 欧美福利电影网| 一区二区三区四区在线播放 | av资源网一区| 久久婷婷综合激情| 另类人妖一区二区av| 欧美片在线播放| 亚洲综合在线免费观看| av动漫一区二区| 日本一区二区成人| 国产精品中文字幕一区二区三区| 欧美一区二区三区在线电影| 亚洲一区二区偷拍精品| 色综合天天做天天爱| 蜜臀久久99精品久久久画质超高清| 欧洲精品中文字幕| 一区二区不卡在线视频 午夜欧美不卡在 | 9l国产精品久久久久麻豆| 国产亲近乱来精品视频| 国产在线精品一区二区不卡了| 日韩精品一区二区三区视频在线观看| 午夜欧美在线一二页| 欧美性一区二区| 亚洲国产精品麻豆| 欧美日韩高清一区二区| 亚洲mv在线观看| 制服丝袜国产精品| 天堂精品中文字幕在线| 欧美一区二区性放荡片| 日韩精品一二三| 日韩一本二本av| 国产麻豆精品95视频| 久久久久久久久久久电影| 国产激情一区二区三区四区| 国产欧美精品一区二区色综合| 国产福利91精品一区| 国产色爱av资源综合区| 国产69精品久久99不卡| 国产精品短视频| 91极品视觉盛宴| 日韩主播视频在线| 日韩免费福利电影在线观看| 国模少妇一区二区三区| 欧美—级在线免费片| 91免费国产在线| 天堂成人国产精品一区| 精品国产区一区| a在线播放不卡| 亚洲一区二区欧美激情| 777xxx欧美| 国产乱妇无码大片在线观看| 中文字幕在线视频一区| 欧美色男人天堂| 狠狠色综合日日| 亚洲欧洲成人自拍| 欧美日韩国产天堂| 黄色日韩网站视频| 亚洲欧美综合另类在线卡通| 欧美日韩久久一区二区| 国产一区二区三区久久久| 国产精品三级av| 欧美日韩免费在线视频| 激情五月婷婷综合| 亚洲欧美一区二区不卡| 日韩一区二区视频| 成人午夜激情在线| 视频一区在线播放| 国产人久久人人人人爽| 欧美日韩国产小视频在线观看| 国产一区二区三区四区五区美女| 日韩一区在线播放| 欧美一区二区视频在线观看2022| 福利电影一区二区三区| 午夜视频久久久久久| 欧美极品美女视频| 91精品国产综合久久精品麻豆 | 欧美日韩国产大片| 国产一区二区91| 性感美女久久精品| 中文字幕一区二区三中文字幕| 91精品国产综合久久精品麻豆 | 国产福利精品一区二区| 亚洲第一福利一区| 亚洲欧洲日韩女同|