#include "stdafx.h"
#include "ADOConn.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
ADOConn::ADOConn()
{
memset(error,0,1024);
}
ADOConn::~ADOConn()
{
}
CADOException::CADOException(char* pchMessage){
m_strMessage = pchMessage;
m_nError = GetLastError();
}
BOOL CADOException::GetErrorMessage(LPTSTR lpstrError, UINT nMaxError,PUINT pnHelpContext /*= NULL*/)
{
char text[200];
if(m_nError == 0)
{
wsprintf(text, "%s error", (const char*) m_strMessage);
}
else
{wsprintf(text, "%s error #%d", (const char*) m_strMessage, m_nError);}
strncpy(lpstrError, text, nMaxError - 1);
return TRUE;
}
BOOL ADOConn::OnInitADOConn(LPCTSTR ConnStr)
{
::CoInitialize(NULL);
try
{
m_pConnection.CreateInstance("ADODB.Connection");
_bstr_t strConnect = _bstr_t(ConnStr);//"Provider=SQLOLEDB; Server=127.0.0.1;Database=EventLogg; uid=event; pwd=event;"
// _bstr_t strConnect = _bstr_t("Provider=SQLOLEDB;Server=127.0.0.1;Database=students; uid=sa; pwd=xwkj0713");
//MessageBox(strConnect);
m_pConnection->Open(strConnect,"","",adModeUnknown);
return TRUE;
}
catch(_com_error e)
{
TRACE(e.Description());
throw new CADOException("连接数据库失败");
}
}
BOOL ADOConn::ExecuteSQL(LPCTSTR lpszSQL)
{
try
{
m_pConnection->Execute(_bstr_t(lpszSQL),NULL,adCmdText);
return true;
}
catch(_com_error e)
{
TRACE(e.Description());
throw new CADOException("执行SQL语句失败");
}
}
_RecordsetPtr& ADOConn::GetRecordSet(LPCTSTR lpszSQL)
{
try
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(_bstr_t(lpszSQL),m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
TRACE(e.Description());
throw new CADOException("执行SELECT语句失败");
}
return m_pRecordset;
}
BOOL ADOConn::GetCollect(LPCTSTR Name,CString &lpDest)
{
VARIANT vt;
try
{
vt = m_pRecordset->GetCollect(Name);
/*if(lpDest != "")
{
strcpy(lpDest,bstr);
}*/
if(vt.vt!=VT_NULL)
{
lpDest=(LPCSTR)_bstr_t(vt);
}
else
{
lpDest="";
}
}
catch (_com_error e)
{
TRACE(e.Description());
sprintf(error,"获取字段:%s值失败",Name);
throw new CADOException(error);
}
return TRUE;
}
BOOL ADOConn::CloseADOConnection()
{
try
{
m_pConnection->Close();
}
catch (_com_error e)
{
TRACE(e.Description());
sprintf(error,e.Description());
throw new CADOException("关闭数据库失败");
}
return TRUE;
}
BOOL ADOConn::CloseTable()
{
try
{
m_pRecordset->Close();
}
catch (_com_error e)
{
TRACE(e.Description());
sprintf(error,e.Description());
throw new CADOException("关闭表失败");
}
return TRUE;
}
BOOL ADOConn::MoveNext()
{
try
{
m_pRecordset->MoveNext();
}
catch (_com_error e)
{
TRACE(e.Description());
sprintf(error,e.Description());
throw new CADOException("结果集移向下一个失败");
}
return TRUE;
}
BOOL ADOConn::adoEOF()
{
return m_pRecordset->adoEOF;
}
BOOL ADOConn::adoBOF()
{
return m_pRecordset->BOF;
}
BOOL ADOConn::BeginTrans()
{
try
{
m_pConnection->BeginTrans();
}
catch (_com_error e)
{
TRACE(e.Description());
sprintf(error,e.Description());
throw new CADOException("事务开始失败");
}
return TRUE;
}
BOOL ADOConn::CommitTrans()
{
try
{
m_pConnection->CommitTrans();
}
catch (_com_error e)
{
TRACE(e.Description());
sprintf(error,e.Description());
throw new CADOException("递交事务失败");
}
return TRUE;
}
BOOL ADOConn::RollbackTrans()
{
try
{
m_pConnection->RollbackTrans();
}
catch (_com_error e)
{
TRACE(e.Description());
sprintf(error,e.Description());
throw new CADOException("回滚事务失败");
}
return TRUE;
}