catch (...) { SetErrorMessage(EXCEPTION_UNKNOWN,__FILE__,__LINE__) ; } return FALSE ; }
//提交事务 BOOL CDBConnection::CommitTrans(void) { try { if (!m_pConnImpl->isValid()) { SetErrorMessage(CONNCTION_INVALIDHANDLE,__FILE__,__LINE__) ; return FALSE ; } DBCONNECTIONPtr->Errors->Clear(); if (DBCONNECTIONPtr->GetState() != adStateClosed) { DBCONNECTIONPtr->CommitTrans() ; return TRUE ; } } catch (_com_error &e) { SetErrorMessage((LPCTSTR)e.Description(),__FILE__,__LINE__) ; } catch (...) { SetErrorMessage(EXCEPTION_UNKNOWN,__FILE__,__LINE__) ; } return FALSE ; }
//回滚事务 BOOL CDBConnection::RollbackTrans(void) { try { if (!m_pConnImpl->isValid()) { SetErrorMessage(CONNCTION_INVALIDHANDLE,__FILE__,__LINE__) ; return FALSE ; } DBCONNECTIONPtr->Errors->Clear(); if (DBCONNECTIONPtr->GetState() != adStateClosed) { DBCONNECTIONPtr->RollbackTrans() ; return TRUE ; } } catch (_com_error &e) { SetErrorMessage((LPCTSTR)e.Description(),__FILE__,__LINE__) ; } catch (...) { SetErrorMessage(EXCEPTION_UNKNOWN,__FILE__,__LINE__) ; } return FALSE ; }
BOOL CDBConnection::Execute(LPCTSTR szSQL,int* pnRecordsAffected) { if(szSQL == NULL) { SetErrorMessage(SQL_EMPTYSQL,__FILE__,__LINE__) ; return FALSE ; } else if(_tcslen(szSQL) == 0) { SetErrorMessage(SQL_EMPTYSQL,__FILE__,__LINE__) ; return FALSE ; }
try { if (!m_pConnImpl->isValid()) { SetErrorMessage(CONNCTION_INVALIDHANDLE,__FILE__,__LINE__) ; return FALSE ; } DBCONNECTIONPtr->Errors->Clear(); if (DBCONNECTIONPtr->GetState() == adStateOpen) { VARIANT vRecordAffected ; VariantInit(&vRecordAffected) ; DBCONNECTIONPtr->Execute(_bstr_t(szSQL),&vRecordAffected,adExecuteNoRecords); if((VT_I4 == vRecordAffected.vt) && (pnRecordsAffected != NULL)) { *pnRecordsAffected = (int)vRecordAffected.lVal ; } VariantClear(&vRecordAffected) ; return TRUE ; } } catch (_com_error &e) { SetErrorMessage((LPCTSTR)e.Description(),__FILE__,__LINE__) ; } catch (...) { SetErrorMessage(EXCEPTION_UNKNOWN,__FILE__,__LINE__) ; } return FALSE ; }
//获取数据库连接接口 BOOL CDBConnection::GetConnectionIDispatch(_variant_t& vActiveConnection) { if (!m_pConnImpl->isValid()) { SetErrorMessage(CONNCTION_INVALIDHANDLE,__FILE__,__LINE__) ; return FALSE ; }
vActiveConnection = (IDispatch*)(DBCONNECTIONPtr); return TRUE ; }
BOOL CDBConnection::OpenRecordSet(LPCTSTR szSQL,CDBRecordSet& rRecordSet) { return rRecordSet.Open(szSQL,*this) ; }
void CDBConnection::SetErrorMessage(LPCTSTR szErrMsg,const char* szSourceFile,int nLine) { m_pConnImpl->SetErrorMessage(szErrMsg,szSourceFile,nLine) ; }
LPCTSTR CDBConnection::GetErrorMessage(void) const { return (LPCTSTR)m_pConnImpl->GetErrorMessage() ; }
//获取数据库访问的错误信息 LPCTSTR CDBConnection::GetDBConnectionErrorMsg(void) { try { m_strConnErrorMsg.Empty() ; if (!m_pConnImpl->isValid()) { SetErrorMessage(CONNCTION_INVALIDHANDLE,__FILE__,__LINE__) ; return (LPCTSTR)m_strConnErrorMsg ; } ErrorPtr pErr = NULL; if( (DBCONNECTIONPtr->Errors->Count) > 0) { long nCount = DBCONNECTIONPtr->Errors->Count;
// Collection ranges from 0 to nCount -1. CString strTempMsg ; for( long i = 0; i < nCount; i++) { pErr = DBCONNECTIONPtr->Errors->GetItem(i); strTempMsg.Format(_T("Error number: %x\tError Message: %s\r\n"), pErr->Number, (LPCSTR) pErr->Description); m_strConnErrorMsg += strTempMsg ; } } } catch (_com_error &e) { SetErrorMessage((LPCTSTR)e.Description(),__FILE__,__LINE__) ; } catch (...) { SetErrorMessage(EXCEPTION_UNKNOWN,__FILE__,__LINE__) ; } return (LPCTSTR)m_strConnErrorMsg ; }
BOOL CDBConnection::CloneTo(CDBConnection& toConnection) { toConnection = *this ; //释放复制来的连接 if(IsOpened()) { toConnection.Close() ; //重新打开连接 return toConnection.Open() ; } return TRUE ; }
#undef DBCONNECTIONPtr
//end of DBConnection.cpp
上一页 [1] [2] [VB.NET程序]ADO 在informix的 Addnew [VB.NET程序]ADO 的测试 [VB.NET程序]ADO 揭密 1 [Web开发][ADO]如何修改ADO的线程模型 [Web开发]Delphi7下仿Ado.Net类的实现 [Web开发]通过COM使用ADO [Web开发]ADO & ADO.NET中使用存储过程的两个共用的函数 [Web开发]Binding a DataGrid to an ADO Recordset [Web开发]ADOCE for ADO Programmers [Web开发]Delphi多线程下的ADO编程
|