123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502 |
- //
- // MODULE: Ado.h
- //
- // AUTHOR: Carlos Antollini
- //
- // mailto: cantollini@hotmail.com
- //
- // Date: 03/21/2002
- //
- // Version 2.01
- //
- #ifndef _ADO_H_
- #define _ADO_H_
- #if _MSC_VER >= 1000
- #pragma once
- #endif // _MSC_VER >= 1000
- #include <afx.h>
- #include <afxdisp.h>
- #include <math.h>
- #pragma warning (disable: 4146)
- // CG : In order to use this code against a different version of ADO, the appropriate
- // ADO library needs to be used in the #import statement
- #import "C:\Program Files\Common Files\System\ADO\msado15.dll" rename_namespace("ADOCG") rename("EOF", "EndOfFile")
- using namespace ADOCG;
- //#import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "adoEOF")
- #pragma warning (default: 4146)
- #include "icrsint.h"
- class CADOCommand;
- struct CADOFieldInfo
- {
- char m_strName[30];
- short m_nType;
- long m_lSize;
- long m_lDefinedSize;
- long m_lAttributes;
- short m_nOrdinalPosition;
- BOOL m_bRequired;
- BOOL m_bAllowZeroLength;
- long m_lCollatingOrder;
- };
- CString IntToStr(int nVal);
- CString LongToStr(long lVal);
- CString ULongToStr(unsigned long ulVal);
- CString DblToStr(double dblVal, int ndigits = 20);
- CString DblToStr(float fltVal);
- class CADODatabase
- {
- public:
- BOOL Execute(LPCTSTR lpstrExec);
- CADODatabase()
- {
- ::CoInitialize(NULL);
-
- m_pConnection = NULL;
- m_strConnection = _T("");
- m_strLastError = _T("");
- m_dwLastError = 0;
- m_pConnection.CreateInstance(__uuidof(Connection));
- }
-
- ~CADODatabase()
- {
- Close();
- m_pConnection.Release();
- m_pConnection = NULL;
- m_strConnection = _T("");
- m_strLastError = _T("");
- m_dwLastError = 0;
- ::CoUninitialize();
- }
-
- BOOL Open(LPCTSTR lpstrConnection = _T(""), LPCTSTR lpstrUserID = _T(""), LPCTSTR lpstrPassword = _T(""));
- _ConnectionPtr GetActiveConnection()
- {return m_pConnection;};
- DWORD GetRecordCount(_RecordsetPtr m_pRs);
- long BeginTransaction()
- {return m_pConnection->BeginTrans();};
- long CommitTransaction()
- {return m_pConnection->CommitTrans();};
- long RollbackTransaction()
- {return m_pConnection->RollbackTrans();};
- BOOL IsOpen();
- void Close();
- void SetConnectionString(LPCTSTR lpstrConnection)
- {m_strConnection = lpstrConnection;};
- CString GetConnectionString()
- {return m_strConnection;};
- CString GetLastErrorString()
- {return m_strLastError;};
- DWORD GetLastError()
- {return m_dwLastError;};
- protected:
- void dump_com_error(_com_error &e);
- public:
- _ConnectionPtr m_pConnection;
- protected:
- CString m_strConnection;
- CString m_strLastError;
- DWORD m_dwLastError;
- };
- class CADORecordset
- {
- public:
- BOOL Clone(CADORecordset& pRs);
- enum cadoOpenEnum
- {
- openUnknown = 0,
- openQuery = 1,
- openTable = 2,
- openStoredProc = 3,
- openCmdText = 4
- };
- enum cadoEditEnum
- {
- dbEditNone = 0,
- dbEditNew = 1,
- dbEdit = 2
- };
-
- enum cadoPositionEnum
- {
-
- positionUnknown = -1,
- positionBOF = -2,
- positionEOF = -3
- };
-
- enum cadoSearchEnum
- {
- searchForward = 1,
- searchBackward = -1
- };
- enum cadoDataType
- {
- typeEmpty = adEmpty,
- typeTinyInt = adTinyInt,
- typeSmallInt = adSmallInt,
- typeInteger = adInteger,
- typeBigInt = adBigInt,
- typeUnsignedTinyInt = adUnsignedTinyInt,
- typeUnsignedSmallInt = adUnsignedSmallInt,
- typeUnsignedInt = adUnsignedInt,
- typeUnsignedBigInt = adUnsignedBigInt,
- typeSingle = adSingle,
- typeDouble = adDouble,
- typeCurrency = adCurrency,
- typeDecimal = adDecimal,
- typeNumeric = adNumeric,
- typeBoolean = adBoolean,
- typeError = adError,
- typeUserDefined = adUserDefined,
- typeVariant = adVariant,
- typeIDispatch = adIDispatch,
- typeIUnknown = adIUnknown,
- typeGUID = adGUID,
- typeDate = adDate,
- typeDBDate = adDBDate,
- typeDBTime = adDBTime,
- typeDBTimeStamp = adDBTimeStamp,
- typeBSTR = adBSTR,
- typeChar = adChar,
- typeVarChar = adVarChar,
- typeLongVarChar = adLongVarChar,
- typeWChar = adWChar,
- typeVarWChar = adVarWChar,
- typeLongVarWChar = adLongVarWChar,
- typeBinary = adBinary,
- typeVarBinary = adVarBinary,
- typeLongVarBinary = adLongVarBinary,
- typeChapter = adChapter,
- typeFileTime = adFileTime,
- typePropVariant = adPropVariant,
- typeVarNumeric = adVarNumeric,
- typeArray = adVariant
- };
-
- BOOL SetFieldValue(int nIndex, int nValue);
- BOOL SetFieldValue(LPCTSTR lpFieldName, int nValue);
- BOOL SetFieldValue(int nIndex, long lValue);
- BOOL SetFieldValue(LPCTSTR lpFieldName, long lValue);
- BOOL SetFieldValue(int nIndex, unsigned long lValue);
- BOOL SetFieldValue(LPCTSTR lpFieldName, unsigned long lValue);
- BOOL SetFieldValue(int nIndex, double dblValue);
- BOOL SetFieldValue(LPCTSTR lpFieldName, double dblValue);
- BOOL SetFieldValue(int nIndex, CString strValue);
- BOOL SetFieldValue(LPCTSTR lpFieldName, CString strValue);
- BOOL SetFieldValue(int nIndex, COleDateTime time);
- BOOL SetFieldValue(LPCTSTR lpFieldName, COleDateTime time);
- BOOL SetFieldValue(int nIndex, bool bValue);
- BOOL SetFieldValue(LPCTSTR lpFieldName, bool bValue);
- BOOL SetFieldValue(int nIndex, COleCurrency cyValue);
- BOOL SetFieldValue(LPCTSTR lpFieldName, COleCurrency cyValue);
- BOOL SetFieldValue(int nIndex, _variant_t vtValue);
- BOOL SetFieldValue(LPCTSTR lpFieldName, _variant_t vtValue);
- BOOL SetFieldEmpty(int nIndex);
- BOOL SetFieldEmpty(LPCTSTR lpFieldName);
- void CancelUpdate();
- BOOL Update();
- void Edit();
- BOOL AddNew();
- BOOL AddNew(CADORecordBinding &pAdoRecordBinding);
- BOOL Find(LPCTSTR lpFind, int nSearchDirection = CADORecordset::searchForward);
- BOOL FindFirst(LPCTSTR lpFind);
- BOOL FindNext();
- CADORecordset()
- {
- m_pRecordset = NULL;
- m_pCmd = NULL;
- m_strQuery = _T("");
- m_strLastError = _T("");
- m_dwLastError = 0;
- m_pRecBinding = NULL;
- m_pRecordset.CreateInstance(__uuidof(Recordset));
- m_pCmd.CreateInstance(__uuidof(Command));
- m_nEditStatus = CADORecordset::dbEditNone;
- m_nSearchDirection = CADORecordset::searchForward;
- }
- CADORecordset(CADODatabase* pAdoDatabase);
- ~CADORecordset()
- {
- Close();
- if(m_pRecordset)
- m_pRecordset.Release();
- if(m_pCmd)
- m_pCmd.Release();
- m_pRecordset = NULL;
- m_pCmd = NULL;
- m_pRecBinding = NULL;
- m_strQuery = _T("");
- m_strLastError = _T("");
- m_dwLastError = 0;
- m_nEditStatus = dbEditNone;
- }
- CString GetQuery()
- {return m_strQuery;};
- void SetQuery(LPCSTR strQuery)
- {m_strQuery = strQuery;};
- BOOL RecordBinding(CADORecordBinding &pAdoRecordBinding);
- DWORD GetRecordCount();
- BOOL IsOpen();
- void Close();
- BOOL Open(_ConnectionPtr mpdb, LPCTSTR lpstrExec = _T(""), int nOption = CADORecordset::openUnknown);
- BOOL Open(LPCTSTR lpstrExec = _T(""), int nOption = CADORecordset::openUnknown);
- long GetFieldCount()
- {return m_pRecordset->Fields->GetCount();};
- BOOL GetFieldValue(LPCTSTR lpFieldName, int& nValue);
- BOOL GetFieldValue(int nIndex, int& nValue);
- BOOL GetFieldValue(LPCTSTR lpFieldName, long& lValue);
- BOOL GetFieldValue(int nIndex, long& lValue);
- BOOL GetFieldValue(LPCTSTR lpFieldName, unsigned long& ulValue);
- BOOL GetFieldValue(int nIndex, unsigned long& ulValue);
- BOOL GetFieldValue(LPCTSTR lpFieldName, double& dbValue);
- BOOL GetFieldValue(int nIndex, double& dbValue);
- BOOL GetFieldValue(LPCTSTR lpFieldName, CString& strValue, CString strDateFormat = _T(""));
- BOOL GetFieldValue(int nIndex, CString& strValue, CString strDateFormat = _T(""));
- BOOL GetFieldValue(LPCTSTR lpFieldName, COleDateTime& time);
- BOOL GetFieldValue(int nIndex, COleDateTime& time);
- BOOL GetFieldValue(int nIndex, bool& bValue);
- BOOL GetFieldValue(LPCTSTR lpFieldName, bool& bValue);
- BOOL GetFieldValue(int nIndex, COleCurrency& cyValue);
- BOOL GetFieldValue(LPCTSTR lpFieldName, COleCurrency& cyValue);
- BOOL GetFieldValue(int nIndex, _variant_t& vtValue);
- BOOL GetFieldValue(LPCTSTR lpFieldName, _variant_t& vtValue);
-
- BOOL IsFieldNull(LPCTSTR lpFieldName);
- BOOL IsFieldNull(int nIndex);
- BOOL IsFieldEmpty(LPCTSTR lpFieldName);
- BOOL IsFieldEmpty(int nIndex);
- BOOL IsEof()
- {return m_pRecordset->EndOfFile == VARIANT_TRUE;};
- BOOL IsEOF()
- {return m_pRecordset->EndOfFile == VARIANT_TRUE;};
- BOOL IsBof()
- {return m_pRecordset->BOF == VARIANT_TRUE;};
- BOOL IsBOF()
- {return m_pRecordset->BOF == VARIANT_TRUE;};
- void MoveFirst()
- {m_pRecordset->MoveFirst();};
- void MoveNext()
- {m_pRecordset->MoveNext();};
- void MovePrevious()
- {m_pRecordset->MovePrevious();};
- void MoveLast()
- {m_pRecordset->MoveLast();};
- long GetAbsolutePage()
- {return m_pRecordset->GetAbsolutePage();};
- void SetAbsolutePage(int nPage)
- {m_pRecordset->PutAbsolutePage((enum PositionEnum)nPage);};
- long GetPageCount()
- {return m_pRecordset->GetPageCount();};
- long GetPageSize()
- {return m_pRecordset->GetPageSize();};
- void SetPageSize(int nSize)
- {m_pRecordset->PutPageSize(nSize);};
- long GetAbsolutePosition()
- {return m_pRecordset->GetAbsolutePosition();};
- void SetAbsolutePosition(int nPosition)
- {m_pRecordset->PutAbsolutePosition((enum PositionEnum)nPosition);};
- void Move(ADO_LONGPTR NumRecords)
- {
- m_pRecordset->Move(NumRecords);
- }
- BOOL GetFieldInfo(LPCTSTR lpFieldName, CADOFieldInfo* fldInfo);
- BOOL GetFieldInfo(int nIndex, CADOFieldInfo* fldInfo);
- BOOL AppendChunk(LPCTSTR lpFieldName, LPVOID lpData, UINT nBytes);
- BOOL AppendChunk(int nIndex, LPVOID lpData, UINT nBytes);
- BOOL AppendChunkFromFile(LPCTSTR lpFieldName, CHAR* strFileName);
- BOOL AppendChunkFromFile(int nIndex, CHAR* strFileName);
- LONG GetChunk(LPCTSTR lpFieldName, CString& strValue);
- LONG GetChunk(int nIndex, CString& strValue);
-
- LONG GetChunk(LPCTSTR lpFieldName, LPVOID pData);
- LONG GetChunk(int nIndex, LPVOID pData);
- LONG GetChunkToFile(LPCTSTR lpFieldName, CHAR* strFileName);
- LONG GetChunkToFile(int nIndex, CHAR* strFileName);
- CString GetString(LPCTSTR lpCols, LPCTSTR lpRows, LPCTSTR lpNull, long numRows = 0);
- CString GetLastErrorString()
- {return m_strLastError;};
- DWORD GetLastError()
- {return m_dwLastError;};
- void GetBookmark()
- {m_varBookmark = m_pRecordset->Bookmark;};
- BOOL SetBookmark();
- BOOL Delete();
- BOOL IsConnectionOpen()
- {return m_pConnection->GetState() != adStateClosed;};
- _RecordsetPtr GetRecordset()
- {return m_pRecordset;};
- _ConnectionPtr GetActiveConnection()
- {return m_pConnection;};
- BOOL SetFilter(LPCTSTR strFilter);
- BOOL SetSort(LPCTSTR lpstrCriteria);
- BOOL SaveAsXML(LPCTSTR lpstrXMLFile);
- BOOL OpenXML(LPCTSTR lpstrXMLFile);
- BOOL Execute(CADOCommand* pCommand);
- public:
- _RecordsetPtr m_pRecordset;
- _CommandPtr m_pCmd;
-
- protected:
- _ConnectionPtr m_pConnection;
- int m_nSearchDirection;
- CString m_strFind;
- _variant_t m_varBookFind;
- _variant_t m_varBookmark;
- int m_nEditStatus;
- CString m_strLastError;
- DWORD m_dwLastError;
- void dump_com_error(_com_error &e);
- IADORecordBinding *m_pRecBinding;
- CString m_strQuery;
- protected:
- BOOL PutFieldValue(LPCTSTR lpFieldName, _variant_t vtFld);
- BOOL PutFieldValue(_variant_t vtIndex, _variant_t vtFld);
- BOOL GetFieldInfo(FieldPtr pField, CADOFieldInfo* fldInfo);
- LONG GetChunk(FieldPtr pField, CString& strValue);
- LONG GetChunk(FieldPtr pField, LPVOID lpData);
- BOOL AppendChunk(FieldPtr pField, LPVOID lpData, UINT nBytes);
-
- };
- class CADOParameter
- {
- public:
- enum cadoParameterDirection
- {
- paramUnknown = adParamUnknown,
- paramInput = adParamInput,
- paramOutput = adParamOutput,
- paramInputOutput = adParamInputOutput,
- paramReturnValue = adParamReturnValue
- };
- CADOParameter(int nType, long lSize = 0, int nDirection = paramInput, CString strName = _T(""));
-
- ~CADOParameter()
- {
- m_pParameter.Release();
- m_pParameter = NULL;
- m_strName = _T("");
- }
- BOOL SetValue(int nValue);
- BOOL SetValue(long lValue);
- BOOL SetValue(double dbValue);
- BOOL SetValue(CString strValue);
- BOOL SetValue(COleDateTime time);
- BOOL SetValue(_variant_t vtValue);
- BOOL GetValue(int& nValue);
- BOOL GetValue(long& lValue);
- BOOL GetValue(double& dbValue);
- BOOL GetValue(CString& strValue, CString strDateFormat = _T(""));
- BOOL GetValue(COleDateTime& time);
- BOOL GetValue(_variant_t& vtValue);
-
- void SetName(CString strName)
- {m_strName = strName;};
- CString GetName()
- {return m_strName;};
- int GetType()
- {return m_nType;};
- _ParameterPtr GetParameter()
- {return m_pParameter;};
- protected:
- void dump_com_error(_com_error &e);
-
- protected:
- _ParameterPtr m_pParameter;
- CString m_strName;
- int m_nType;
- CString m_strLastError;
- DWORD m_dwLastError;
- };
- class CADOCommand
- {
- public:
- enum cadoCommandType
- {
- typeCmdText = adCmdText,
- typeCmdTable = adCmdTable,
- typeCmdTableDirect = adCmdTableDirect,
- typeCmdStoredProc = adCmdStoredProc,
- typeCmdUnknown = adCmdUnknown,
- typeCmdFile = adCmdFile
- };
-
- CADOCommand(CADODatabase* pAdoDatabase, CString strCommandText = _T(""), int nCommandType = typeCmdStoredProc);
-
- ~CADOCommand()
- {
- m_pCommand.Release();
- m_pCommand = NULL;
- m_strCommandText = _T("");
- }
- void SetText(CString strCommandText);
- void SetType(int nCommandType);
- int GetType()
- {return m_nCommandType;};
- BOOL AddParameter(CADOParameter* pAdoParameter);
- BOOL AddParameter(CString strName, int nType, int nDirection, long lSize, int nValue);
- BOOL AddParameter(CString strName, int nType, int nDirection, long lSize, long lValue);
- BOOL AddParameter(CString strName, int nType, int nDirection, long lSize, double dblValue);
- BOOL AddParameter(CString strName, int nType, int nDirection, long lSize, CString strValue);
- BOOL AddParameter(CString strName, int nType, int nDirection, long lSize, COleDateTime time);
- BOOL AddParameter(CString strName, int nType, int nDirection, long lSize, _variant_t vtValue);
- CString GetText()
- {return m_strCommandText;};
- _CommandPtr GetCommand()
- {return m_pCommand;};
- protected:
- void dump_com_error(_com_error &e);
- protected:
- _CommandPtr m_pCommand;
- int m_nCommandType;
- CString m_strCommandText;
- CString m_strLastError;
- DWORD m_dwLastError;
- };
- #endif
|