⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adoconn.cpp

📁 这个是一个比较全的超市管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "StdAfx.h"
#include "ADOConn.h"
//功能:构造函数
//strData:数据库的名字
CString CADOConn::GetAppPath()
{
	char lpFileName[MAX_PATH];
	GetModuleFileName(AfxGetInstanceHandle(),lpFileName,MAX_PATH);

	CString strFileName = lpFileName;
	int nIndex = strFileName.ReverseFind ('\\');
	
	CString strPath;

	if (nIndex > 0)
		strPath = strFileName.Left (nIndex);
	else
		strPath = "";
	return strPath;
}
CADOConn::CADOConn(CString strData)
{
	CString strValue;
	strData.TrimLeft();
	strData.TrimRight();
	m_strData=_bstr_t(strData);
	strValue=strData.Right(3);
	if(strValue=="mdb") m_DataType=1;
	if(strValue=="xls") m_DataType=2;
}
CADOConn::CADOConn()
{
	m_DataType=3;
}
//功能:析构函数
CADOConn::~CADOConn()
{

}
//功能:初始化数据库连接
void  CADOConn::OnInitCADOConn()
{
	// 初始化OLE/COM库环境
	::CoInitialize(NULL);
 	try
	{
		//初始化指针
		m_pConnection=NULL;
		//初始化指针
		m_pRecordset=NULL;
		// 创建Connection对象
		m_pConnection.CreateInstance("ADODB.Connection");
		// 设置连接字符串,必须是BSTR型或者_bstr_t类型	
		_bstr_t strConnect;
		switch(m_DataType)
		{
		case 1://ACCESS
			strConnect=_bstr_t("Provider=Microsoft.Jet.OLEDB.4.0;");
			strConnect=strConnect+_bstr_t("Data Source=");
			strConnect=strConnect+_bstr_t(GetAppPath())+_bstr_t("\\");
			strConnect=strConnect+m_strData;
			break;
		case 2://EXCEL
			strConnect=_bstr_t("Provider=Microsoft.Jet.OLEDB.4.0;");
			strConnect=strConnect+_bstr_t("Data Source=");
			strConnect=strConnect+_bstr_t(GetAppPath())+_bstr_t("\\");
			strConnect=strConnect+m_strData;
			strConnect=strConnect+";Extended Properties=Excel 8.0";		
			break;			
		case 3://SQLSERVER
			strConnect=_bstr_t("Provider=Microsoft.Jet.OLEDB.4.0;");
			strConnect=strConnect+_bstr_t("Data Source=D:\\FECG\\");
			strConnect=strConnect+";Extended Properties=Excel 8.0";					
			break;
		}
		m_pConnection->Open(strConnect,_bstr_t(""),_bstr_t(""),adModeUnknown);
	}
	// 捕捉异常
	catch(_com_error e)
	{	
		// 显示错误信息
		AfxMessageBox(e.Description());
	}
	ASSERT(m_pConnection != NULL);
}
//功能:执行查询
//返回值:字段集的指针
_RecordsetPtr&  CADOConn::GetRecordSet(CString strSQL)
{

	try
	{
		// 连接数据库,如果Connection对象为空,则重新连接数据库
		if(m_pConnection==NULL)OnInitCADOConn();	
		strSQL.TrimLeft();
		strSQL.TrimRight();
		// 创建记录集对象
		m_pRecordset.CreateInstance(__uuidof(Recordset));
		// 取得表中的记录
		m_pRecordset->Open(_bstr_t(strSQL),m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
	}
	// 捕捉异常
	catch(_com_error e)
	{
		// 显示错误信息
		AfxMessageBox(e.Description());
	}
	ASSERT(m_pRecordset!= NULL);
	// 返回记录集
	return m_pRecordset;
}
//功能:打开字符集
//返回值:TRUE:成功 FALSE:失败
BOOL CADOConn::Open(CString strSQL)
{
	try
	{
		// 连接数据库,如果Connection对象为空,则重新连接数据库
		if(m_pConnection==NULL) OnInitCADOConn();		
		strSQL.TrimLeft();
		strSQL.TrimRight();
		// 创建记录集对象
		m_pRecordset.CreateInstance(__uuidof(Recordset));
		// 取得表中的记录
		m_pRecordset->Open(_bstr_t(strSQL),m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
	}
	// 捕捉异常
	catch(_com_error e)
	{
		// 显示错误信息
		AfxMessageBox(e.Description());
		return FALSE;
	}
	// 返回记录集
	ASSERT(m_pRecordset!= NULL);
	return TRUE;	
}
//功能:记录集移向开头
//返回值:TRUE:成功 FALSE:失败
BOOL CADOConn::MoveFirst()
{
	if(m_pRecordset==NULL) 
		return FALSE;
	else
	{
		m_pRecordset->MoveFirst();
		return TRUE;
	}

}
//功能:记录集向下移动
//返回值:TRUE:成功 FALSE:失败
BOOL CADOConn::MoveNext()
{
	if(m_pRecordset==NULL) 
		return FALSE;
	else
	{
		if (!m_pRecordset->adoEOF)
		{
			m_pRecordset->MoveNext();
			return TRUE;
		}
		else
			return FALSE;		
	}

}
//功能:取得字段中的字符串
//index:字段集中的索引
//strSum:返回的字符的长度(<=实际:代表全部返回,>实际:左补空格)
CString CADOConn::GetValueString(int index,int strSum)
{
	_variant_t vValue;//var型返回值
	_variant_t vIndex;//索引
	CString strValue,strType,str;//strValue:初始返回值 strType:格式化字符串 str:最终返回值
	vIndex.vt=VT_I2;
	vIndex.iVal=index;
	vValue=m_pRecordset->Fields->GetItem(vIndex)->Value;
	switch(vValue.vt)
	{
	case VT_NULL:
		str="";
		break;
	case VT_ERROR:
		str="";
		break;	
	case VT_EMPTY:
		str="";
		break;
	default:
		str=(LPCSTR)_bstr_t(vValue);
	}
	strType.Format("%d",strSum);
	strType="%"+strType+"s";
	strValue.Format(strType,str);
	return strValue;
	
}
//功能:取得字段中的字节型整数
//index:字段集中的索引
byte CADOConn::GetValueByte(int index)
{
	_variant_t vValue;//var型返回值
	_variant_t vIndex;//索引
	byte bValue;//数值返回值
	vIndex.vt=VT_I2;
	vIndex.iVal=index;
	vValue=m_pRecordset->Fields->GetItem(vIndex)->Value;
	switch(vValue.vt)
	{
	case VT_NULL:
		bValue=0;
		break;
	case VT_ERROR:
		bValue=0;
		break;
	case VT_EMPTY:
		bValue=0;
		break;
	default:
		bValue=vValue.bVal;
	}
	return bValue;
}
//功能:取得字段中的字节型整数的字符串形式
//index:字段集中的索引
//strSum:返回的字符的长度(<=实际:代表全部返回,>实际:左补空格)
CString CADOConn::GetValueByteStr (int index,int strSum)
{
	_variant_t vValue;//var型返回值
	_variant_t vIndex;//索引
	byte bValue;//数值返回值
	CString strValue,strType;//strValue:字符串返回值 strType:格式化字符串
	vIndex.vt=VT_I2;
	vIndex.iVal=index;
	vValue=m_pRecordset->Fields->GetItem(vIndex)->Value;
	switch(vValue.vt)
	{
	case VT_NULL:
		bValue=0;
		break;
	case VT_ERROR:
		bValue=0;
		break;
	case VT_EMPTY:
		bValue=0;
		break;
	default:
		bValue=vValue.bVal;
	}
	strType.Format("%d",strSum);
	strType="%"+strType+"d";
	strValue.Format(strType,bValue);
	return strValue;
}
//功能:取得字段中的短整型整数
//index:字段集中的索引
int CADOConn::GetValueInt(int index)
{
	_variant_t vValue;//var型返回值
	_variant_t vIndex;//索引
	int iValue;//数值返回值
	vIndex.vt=VT_I2;
	vIndex.iVal=index;
	vValue=m_pRecordset->Fields->GetItem(vIndex)->Value;
	switch(vValue.vt)
	{
	case VT_NULL:
		iValue=0;
		break;
	case VT_ERROR:
		iValue=0;
		break;
	case VT_EMPTY:
		iValue=0;
		break;
	default:
		iValue=vValue.iVal;
	}
	return iValue;
}
//功能:取得字段中的短整型整数的字符串形式
//index:字段集中的索引
//strSum:返回的字符的长度(<=实际:代表全部返回,>实际:左补空格)
CString CADOConn::GetValueIntStr(int index,int strSum)
{
	_variant_t vValue;//var型返回值
	_variant_t vIndex;//索引
	int iValue;//数值返回值
	CString strValue,strType;//strValue:字符串返回值 strType:格式化字符串
	vIndex.vt=VT_I2;
	vIndex.iVal=index;
	vValue=m_pRecordset->Fields->GetItem(vIndex)->Value;
	switch(vValue.vt)
	{
	case VT_NULL:
		iValue=0;
		break;
	case VT_ERROR:
		iValue=0;
		break;
	case VT_EMPTY:
		iValue=0;
		break;
	default:
		iValue=vValue.iVal;
	}
	strType.Format("%d",strSum);
	strType="%"+strType+"d";
	strValue.Format(strType,iValue);
	return strValue;	
}
//功能:取得字段中的双精度浮点数
//index:字段集中的索引
double CADOConn::GetValueDouble(int index)
{
	_variant_t vValue;//var型返回值
	_variant_t vIndex;//索引
	double dValue;//数值返回值
	vIndex.vt=VT_I2;
	vIndex.iVal=index;
	vValue=m_pRecordset->Fields->GetItem(vIndex)->Value;
	switch(vValue.vt)
	{
	case VT_NULL:
		dValue=0;
		break;
	case VT_ERROR:
		dValue=0;
		break;
	case VT_EMPTY:
		dValue=0;
		break;
	default:
		dValue=vValue.dblVal;
	}
	return dValue;
}
//功能:取得字段中的双精度浮点数的字符串形式
//index:字段集中的索引
//strLSum(整数部分):返回的整数部分的长度(<=实际:代表全部返回,>实际:左补空格)
//strRSum(小数部分):返回的小数部分的长度(<=实际:代表全部返回,>实际:右补空格)
CString CADOConn::GetValueDoubleStr(int index,int strLSum,int strRSum)
{
	_variant_t vValue;//var型返回值
	_variant_t vIndex;//索引
	double dValue;//数值返回值
	CString strValue,strType;//strValue:字符串返回值 strType:格式化字符串
	vIndex.vt=VT_I2;
	vIndex.iVal=index;
	vValue=m_pRecordset->Fields->GetItem(vIndex)->Value;
	switch(vValue.vt)
	{
	case VT_NULL:
		dValue=0;
		break;
	case VT_ERROR:
		dValue=0;
		break;
	case VT_EMPTY:
		dValue=0;
		break;
	default:
		dValue=vValue.dblVal;
	}
	strType.Format("%d.%d",strLSum,strRSum);
	strType="%"+strType+"f";
	strValue.Format(strType,dValue);
	return strValue;
}
//功能:取得字段中的单精度浮点数
//index:字段集中的索引
float CADOConn::GetValueFloat(int index)
{
	_variant_t vValue;//var型返回值
	_variant_t vIndex;//索引
	float fValue;//数值返回值
	vIndex.vt=VT_I2;
	vIndex.iVal=index;
	vValue=m_pRecordset->Fields->GetItem(vIndex)->Value;
	switch(vValue.vt)
	{
	case VT_NULL:
		fValue=0;
		break;
	case VT_ERROR:
		fValue=0;
		break;
	case VT_EMPTY:
		fValue=0;
		break;
	default:
		fValue=vValue.fltVal;
	}
	return fValue;
}
//功能:取得字段中的单精度浮点数的字符串形式
//index:字段集中的索引
//strLSum(整数部分):返回的整数部分的长度(<=实际:代表全部返回,>实际:左补空格)
//strRSum(小数部分):返回的小数部分的长度(<=实际:代表全部返回,>实际:右补空格)
CString CADOConn::GetValueFloatStr(int index,int strLSum,int strRSum)
{
	_variant_t vValue;//var型返回值
	_variant_t vIndex;//索引
	float fValue;//数值返回值
	CString strValue,strType;//strValue:字符串返回值 strType:格式化字符串
	vIndex.vt=VT_I2;
	vIndex.iVal=index;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -