操作ACCESS的类CADOConn (二)

2014-11-24 03:07:08 · 作者: · 浏览: 13
参数:
返回值:
修改记录:
************************************************************************/
CString CADOConn::GetAppPath()
{
char lpFilePath[MAX_PATH];
CString strPath;

GetModuleFileName(AfxGetInstanceHandle(), lpFilePath, MAX_PATH);
strPath = lpFilePath;
strPath = strPath.Left(strPath.ReverseFind('\\'));

return strPath;
}

/************************************************************************
函数名: InitCADOConn
作 者: 谭友亮(Charles Tan)
日 期: 2013-3-5
作 用: 初始化数据库连接
形参数:
返回值:
修改记录:
************************************************************************/
void CADOConn::InitCADOConn()
{
CString toolPath = GetAppPath();

//初始化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_iDatabaseType)
{
case 1://ACCESS
strConnect = _bstr_t("Provider = Microsoft.Jet.OLEDB.4.0;Data Source = ");
strConnect = strConnect + _bstr_t(toolPath) + _bstr_t("\\data\\") + m_strDatabaseName;
break;
case 2://EXCEL
strConnect = _bstr_t("Provider = Microsoft.Jet.OLEDB.4.0;Data Source = ");
strConnect = strConnect + _bstr_t(toolPath) + _bstr_t("\\") + m_strDatabaseName;
strConnect = strConnect + ";Extended Properties=Excel 8.0";
break;
case 3://SQL SERVER
strConnect = _bstr_t("Provider = Microsoft.Jet.OLEDB.4.0;Data Source = ");
strConnect = strConnect + _bstr_t(toolPath) + _bstr_t("\\") + m_strDatabaseName;
strConnect = strConnect + ";Extended Properties=Excel 8.0";
break;
}

m_pConnection->Open(strConnect, _bstr_t(""), _bstr_t(""), adModeUnknown);
//ShellExecute(NULL, _T("open"), toolPath + "\\" + m_strDatabaseName, NULL, NULL, SW_SHOWMAXIMIZED);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}

/************************************************************************
函数名: GetRecordSet
作 者: 谭友亮(Charles Tan)
日 期: 2013-3-5
作 用: 执行查询
形参数: strSQL SQL语句
返回值: m_pRecordset 字段集的指针
修改记录:
************************************************************************/
_RecordsetPtr& CADOConn::GetRecordSet(CString strSQL)
{
try
{
//连接数据库,如果Connection对象为空,则重新连接数据库
if(m_pConnection == NULL)
{
InitCADOConn();
}

strSQL.TrimLeft();
strSQL.TrimRight();
//创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
//取得表中的记录
m_pRecordset->Open(_bstr_t(strSQL), m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
return m_pRecordset;
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}

return m_pRecordset;
}

/************************************************************************