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

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

?? myrecordset.cpp

?? 華東理工大學李英所著《Visual C++編程與項目開發》的源代碼。 本書簡明扼要
?? CPP
字號:
// MyRecordSet.cpp: implementation of the MyRecordSet class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ExMIS.h"
#include "MyRecordSet.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//建立新對象
MyRecordSet::MyRecordSet()
{	
	isConn=false;
	isOpen=false;

	nFieldRows=0;
	nFieldCols=0;

	try{
		m_pConn.CreateInstance(__uuidof(Connection));
		m_pRst.CreateInstance(__uuidof(Recordset));
	}
	catch(...)
	{
	}
}

MyRecordSet::~MyRecordSet()
{
	if(isOpen) m_pRst->Close();

	if(isConn) m_pConn->Close();	
}

bool MyRecordSet::ADOOpen(CString strDataType)
{
	m_strDBType=strDataType;
	return ADOOpen();
}

//建立數據庫連接
bool MyRecordSet::ADOOpen()
{	
	ADOConnectionClose();

	isConn=false;
	try{
		//選擇不同的數據庫連接 ACCESS和SQLServer
		if(m_strDBType=="ACCESS")
		{
			m_pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=StuMIS.mdb","","",-1);
		}
		else
		{		
			m_pConn->Open("Provider=SQLOLEDB.1;Password=123;Persist Security Info=True;User ID=sa;Initial Catalog=StuMIS;Data Source=ab98b11efbae45b","","",-1);
		}
		//使游標在客戶端,才能取出行,列數
		m_pRst->CursorLocation = adUseClient;
		isConn=true;	//連接成績
	}
	catch(...){
		AfxMessageBox("與數據建立連接失敗!");		
	}
	
	return isConn;
}

//執行SQL語句,返回數據集,主要針對查詢
bool MyRecordSet::ADOExcute(CString strSQL)
{
	m_strSQL=strSQL;
	return ADOExcute();
}

/*
是第二個參數的意義:
  _RecordsetPtr   Connection15::Execute   (   _bstr_t   CommandText,   VARIANT   *   RecordsAffected,   long   Options   )   
      
  其中CommandText是命令字串,通常是SQL命令。   
  參數RecordsAffected是操作完成后所影響的行數,     
  參數Options表示CommandText中內容的類型,Options可以取如下值之一:   
    adCmdText:表明CommandText是文本命令   
    adCmdTable:表明CommandText是一個表名   
    adCmdProc:表明CommandText是一個存儲過程   
    adCmdUnknown:未知
*/
//執行SQL語句,返回受影響的行數,主要針對增刪改
int MyRecordSet::ADOExcuteNoQuery(CString strSQL)
{
	_variant_t  var;
	_bstr_t sql=strSQL;
	try{
		m_pConn->Execute(sql,&var,adCmdText);
		return (int)V_I2(&var);
	}
	catch(...){
		return 0;
	}
}

bool MyRecordSet::ADOExcute()
{
	//聲明對象	
	_variant_t sql=m_strSQL;
	nFieldRows=0;
	nFieldCols=0;

	ADOClose();

	isOpen=false;
	try{
		m_pRst->Open(sql,m_pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

		if(m_pRst->State)
		{
			nFieldRows=m_pRst->RecordCount;
			nFieldCols=m_pRst->GetFields()->GetCount();

			isOpen=true;
		}
	}
	catch(...)
	{}
	return isOpen;
}

void MyRecordSet::ADOClose()
{
	if(isOpen)
	{
		m_pRst->Close();
		isOpen=false;
	}	
}

void MyRecordSet::ADOConnectionClose()
{
	//只有先關閉數據集才能再關閉連接
	ADOClose();
	if(isConn)
	{
		m_pConn->Close();
		isConn=false;
	}
}

//返回是否數據集結尾
bool MyRecordSet::ADOEOF()
{
	if(isConn&&isOpen)
		return m_pRst->adoEOF;
	return true;
}

HRESULT MyRecordSet::MoveFirst()
{
	return m_pRst->MoveFirst();
}

HRESULT MyRecordSet::MoveLast()
{
	return m_pRst->MoveLast();
}

HRESULT MyRecordSet::MovePrev()
{
	return m_pRst->MovePrevious();
}

HRESULT MyRecordSet::MoveNext()
{
	return m_pRst->MoveNext();
}

//返回字段名稱
CString MyRecordSet::GetFieldName(int nCol)
{
	CString sValue;
	_variant_t vValue;
	vValue=m_pRst->GetFields()->GetItem((long)nCol)->Name;
	if(vValue.vt==VT_EMPTY||vValue.vt==VT_NULL)
		sValue="";
	else
		sValue=(char*)(_bstr_t)vValue;
	sValue.TrimLeft();
	sValue.TrimRight();
	return sValue;
}

//以字符串類型返回數據集中的值,傳入的是字段名稱
CString MyRecordSet::GetFieldString(CString strFieldName)
{
	_variant_t strField=strFieldName;
	_variant_t var;
	try{
		var=m_pRst->GetCollect(strField);
	}
	catch(...)
	{
		AfxMessageBox("讀取數據失敗");
		return "";
	}

   	return VariantToCString(var);
}

//以字符串類型返回數據集中的值,傳入的是列的序號
CString MyRecordSet::GetFieldString(int nCol)
{
	_variant_t var;
	try{
		var=m_pRst->GetCollect((long)nCol);
	}
	catch(...)
	{
		AfxMessageBox("讀取數據失敗");
		return "";
	}
	return VariantToCString(var);
}

//以整型類型返回數據集中的值,傳入的是字段序號
int MyRecordSet::GetFieldNumber(int nCol)
{
	_variant_t var;
	try{
		var=m_pRst->GetCollect((long)nCol);
	}
	catch(...)
	{
		AfxMessageBox("讀取數據失敗");
		return 0;
	}

	return (int)V_I2(&var);
}

//以整型類型返回數據集中的值,傳入的是字段名
int MyRecordSet::GetFieldNumber(CString strFieldName)
{
	_variant_t strField=strFieldName;
	_variant_t var;
	try{
		var=m_pRst->GetCollect(strField);
	}
	catch(...)
	{
		AfxMessageBox("讀取數據失敗");
		return 0;
	}

	return (int)V_I2(&var);
}

//以浮點類型返回數據集中的值
float MyRecordSet::GetFieldFloat(int nCol)
{
	_variant_t var;
	try{
		var=m_pRst->GetCollect((long)nCol);
	}

	catch(...)
	{
		AfxMessageBox("讀取數據失敗");
		return 0;
	}

	/*  
	VT_I4:是長整型,通過V_I4(&var)可以獲得其值。
	VT_R8:是雙精度型,通過V_R8(&var)可以獲得其值。
	*/
	return (float)V_R4(&var);
}

CString MyRecordSet::VariantToCString(VARIANT var)
{
   	CString strValue;
	_variant_t var_t;
	_bstr_t bst_t;
	time_t cur_time;
	CTime time_value;
	COleCurrency var_currency;
	switch(var.vt)
	{
	case VT_EMPTY:strValue=_T("");break;
	case VT_UI1:strValue.Format ("%d",var.bVal);break;
	case VT_I2:strValue.Format ("%d",var.iVal );break;
	case VT_I4:strValue.Format ("%d",var.lVal);break;
	case VT_R4:strValue.Format ("%f",var.fltVal);break;
	case VT_R8:strValue.Format ("%f",var.dblVal);break;
	case VT_CY:
		var_currency=var;
		strValue=var_currency.Format(0);
		break;
	case VT_BSTR:
		var_t=var;
		bst_t=var_t;
		strValue.Format ("%s",(const char*)bst_t);
		break;
	case VT_NULL:strValue=_T("");break;
	case VT_DATE:
		cur_time=var.date;
		time_value=cur_time;
        strValue=time_value.Format("%Y-%m-%d");
		break;
	case VT_BOOL:strValue.Format ("%d",var.boolVal );break;
	default:strValue=_T("");break;
	}
	return strValue;
}

//數據庫中常用的兩個類型轉換
//時間到字符串
CString MyRecordSet::TimeToString(CTime time)
{
	CString   str;
	str=time.Format("%Y-%m-%d");
	return str;
}

//字符串到時間
CTime MyRecordSet::StringToTime(CString str)
{
	if(str==NULL||str=="")
		str="1970-1-1";
	int   y,m,d;	
	y=atoi(str); 
	int   i,j;   
	i=str.Find('-',0);
	j=str.Find('-',i+1);
	CString   temp;   
	while(i<j-1)   
		temp+=str.GetAt(++i);   
	m=atoi(temp);
	temp.Empty();   
	i=str.GetLength();    
	while(j<i-1)   
		temp+=str.GetAt(++j);   
	d=atoi(temp);
	str.Format("%d-%d-%d",y,m,d);
	AfxMessageBox(str);
	CTime mytime(y,m,d,0,0,0);	
	return mytime;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩视频在线观看一区二区| 欧美吻胸吃奶大尺度电影 | 国产精品污污网站在线观看| 91精品免费在线观看| 欧美视频一区二区三区在线观看| 欧美揉bbbbb揉bbbbb| 欧美日韩国产小视频| 日韩一区二区电影| 亚洲精品一区二区三区在线观看| 精品成a人在线观看| 久久免费视频色| 国产精品美女久久久久久久久久久 | 99久久精品国产观看| 成人午夜精品一区二区三区| 99免费精品在线| 欧美一区二区免费观在线| 欧美一区二区大片| 精品久久99ma| 国产精品毛片无遮挡高清| 亚洲视频1区2区| 亚洲国产日韩av| 免费不卡在线视频| 成人激情电影免费在线观看| 色偷偷久久人人79超碰人人澡| 欧美日韩一区中文字幕| 日韩精品专区在线| 欧美激情一区二区在线| 亚洲自拍偷拍综合| 青青草精品视频| 99久久精品国产导航| 欧美一区二区三区在线视频| 亚洲国产成人在线| 香蕉成人伊视频在线观看| 国产麻豆精品在线| 在线观看欧美黄色| 国产亚洲欧美日韩在线一区| 亚洲在线视频网站| 高清免费成人av| 欧美二区三区91| 国产精品电影一区二区三区| 日韩精品视频网站| 99久免费精品视频在线观看| 欧美成人乱码一区二区三区| 亚洲精品中文在线影院| 经典三级在线一区| 欧美日韩精品一二三区| 国产精品久久久久毛片软件| 美女久久久精品| 欧美影院午夜播放| 国产精品久久毛片| 国产在线一区二区| 91精品国产综合久久久蜜臀图片| 国产精品成人免费在线| 国产毛片精品视频| 日韩三级高清在线| 丝袜诱惑亚洲看片| 欧美在线一区二区| 亚洲品质自拍视频| 99久久伊人精品| 久久久久9999亚洲精品| 日本中文字幕一区二区视频| 欧美三级日韩在线| 亚洲电影一区二区| 欧美最猛黑人xxxxx猛交| 日韩一区日韩二区| eeuss鲁片一区二区三区在线看| 精品粉嫩超白一线天av| 久久精品国产精品亚洲综合| 欧美一级欧美三级在线观看 | 久久精品国产亚洲高清剧情介绍 | 中文字幕精品—区二区四季| 久草中文综合在线| 精品国产区一区| 久久精品av麻豆的观看方式| 国产精品久久久一本精品| 成人国产精品免费观看动漫| 国产精品免费丝袜| 99精品欧美一区| 亚洲日本中文字幕区| 色婷婷综合久久久久中文一区二区 | 欧美性猛片aaaaaaa做受| 一区二区三区免费在线观看| 在线观看国产一区二区| 亚洲国产精品精华液网站| 7777精品伊人久久久大香线蕉经典版下载| 亚洲综合一区在线| 制服丝袜亚洲色图| 久久99精品国产| 中文乱码免费一区二区| 91在线观看污| 日韩黄色免费网站| 国产网站一区二区三区| 9久草视频在线视频精品| 亚洲综合无码一区二区| 日韩欧美中文字幕精品| 国产成人av一区二区三区在线| 国产精品久久久久久久久久久免费看| 91麻豆免费观看| 麻豆国产一区二区| 国产精品久久777777| 欧美理论电影在线| 国产乱色国产精品免费视频| 亚洲精品成人悠悠色影视| 91精品国产欧美一区二区成人| 国产不卡高清在线观看视频| 亚洲日本va午夜在线电影| 91精品黄色片免费大全| 高清不卡一二三区| 视频一区视频二区中文| 国产精品麻豆网站| 欧美剧情电影在线观看完整版免费励志电影 | 99久久99久久免费精品蜜臀| 日韩制服丝袜先锋影音| 中文字幕欧美国产| 欧美日韩高清一区| 播五月开心婷婷综合| 麻豆91在线看| 亚洲特级片在线| 精品裸体舞一区二区三区| 精品国产麻豆免费人成网站| 色婷婷综合久久久中文一区二区| 老司机精品视频在线| 一区二区三区欧美视频| 中文av一区二区| 亚洲精品一区二区三区精华液| 91传媒视频在线播放| 成人毛片老司机大片| 韩国成人在线视频| 婷婷亚洲久悠悠色悠在线播放| 日韩码欧中文字| 国产三区在线成人av| 日韩欧美一级二级三级| 欧美色综合天天久久综合精品| 成人激情图片网| 国产精品一二三四| 韩国在线一区二区| 美女网站视频久久| 免费在线看成人av| 亚瑟在线精品视频| 午夜视频在线观看一区二区三区| 自拍偷拍欧美激情| 一区二区中文字幕在线| 国产精品理论片| 日本一区二区三区dvd视频在线| 91精品国产高清一区二区三区 | 丝袜美腿亚洲一区| 亚洲精品国产视频| 亚洲最大成人综合| 一区二区免费看| 亚洲影院免费观看| 亚洲免费av高清| 夜夜嗨av一区二区三区| 亚洲影视资源网| 婷婷激情综合网| 日韩国产一二三区| 蜜桃av噜噜一区| 黄色成人免费在线| 成人av资源在线| 色婷婷av一区二区三区之一色屋| av在线不卡网| 欧美亚洲日本一区| 欧美日韩一区二区三区视频| 欧美日韩激情一区二区三区| 欧美老肥妇做.爰bbww| 日韩亚洲欧美在线| 精品国产乱码久久| 国产精品国产三级国产普通话99| 国产精品久久久久影院亚瑟| 一区二区三区四区国产精品| 午夜免费欧美电影| 激情文学综合丁香| 99re成人在线| 欧美日韩精品一区二区三区蜜桃| 日韩午夜在线观看| 国产亚洲综合性久久久影院| 亚洲美女视频一区| 日韩成人免费在线| 国产v综合v亚洲欧| 色呦呦国产精品| 精品福利一区二区三区| 国产精品国产自产拍高清av王其| 亚洲综合成人在线视频| 麻豆国产精品官网| 91小视频免费观看| 日韩一级免费观看| 中文字幕va一区二区三区| 亚洲成人免费视| 国产不卡在线一区| 欧美精选在线播放| 亚洲国产精品精华液2区45| 一区二区三区四区中文字幕| 国产主播一区二区三区| www久久久久| 亚洲国产日韩精品| 国产伦精品一区二区三区免费迷 | 91精品婷婷国产综合久久性色| 久久久久久9999| 三级成人在线视频| 不卡一区二区中文字幕| 欧美成人精品1314www|