ado2.h
上传用户:dengkfang
上传日期:2008-12-30
资源大小:5233k
文件大小:19k
源码类别:

CA认证

开发平台:

Visual C++

  1. //
  2. // MODULE: Ado2.h
  3. //
  4. // AUTHOR: Carlos Antollini <cantollini@hotmail.com>
  5. //
  6. // Copyright (c) 2001-2004. All Rights Reserved.
  7. //
  8. // Date: August 01, 2005
  9. //
  10. // Version 2.20
  11. //
  12. // This code may be used in compiled form in any way you desire. This
  13. // file may be redistributed unmodified by any means PROVIDING it is 
  14. // not sold for profit without the authors written consent, and 
  15. // providing that this notice and the authors name and all copyright 
  16. // notices remains intact. 
  17. //
  18. // An email letting me know how you are using it would be nice as well. 
  19. //
  20. // This file is provided "as is" with no expressed or implied warranty.
  21. // The author accepts no liability for any damage/loss of business that
  22. // this product may cause.
  23. //
  24. //
  25. //////////////////////////////////////////////////////////////////////
  26. #if !defined(AFX_ADO2_H_INCLUDED_)
  27. #define AFX_ADO2_H_INCLUDED_
  28. #if _MSC_VER >= 1000
  29. #pragma once
  30. #endif // _MSC_VER >= 1000
  31. #include <afx.h>
  32. #include <afxdisp.h>
  33. #include <math.h>
  34. #pragma warning (disable: 4146)
  35. // CG : In order to use this code against a different version of ADO, the appropriate
  36. // ADO library needs to be used in the #import statement
  37. //#pragma message ("Make sure you go to Tools.Options.Directories.Library files and add the paths to msado15.dll and msjro.dll will usually be in C:\Program Files\Common Files\System\ado")
  38. //#import "C:Program FilesCommon FilesSystemadomsado15.dll" rename("EOF", "EndOfFile")
  39. //#import "C:Program FilesCommon FilesSystemadoMSJRO.DLL" no_namespace rename("ReplicaTypeEnum", "_ReplicaTypeEnum") 
  40. #import <C:Program FilesCommon FilesSystemadomsado15.dll> rename("EOF", "EndOfFile")
  41. #import <C:Program FilesCommon FilesSystemadoMSJRO.DLL> no_namespace rename("ReplicaTypeEnum", "_ReplicaTypeEnum") 
  42. using namespace ADODB;
  43. #pragma warning (default: 4146)
  44. #include "icrsint.h"
  45. class CADOCommand;
  46. struct CADOFieldInfo
  47. {
  48. char m_strName[30]; 
  49. short m_nType;
  50. long m_lSize; 
  51. long m_lDefinedSize;
  52. long m_lAttributes;
  53. short m_nOrdinalPosition;
  54. BOOL m_bRequired;   
  55. BOOL m_bAllowZeroLength; 
  56. long m_lCollatingOrder;  
  57. };
  58. CString IntToStr(int nVal);
  59. CString LongToStr(long lVal);
  60. CString ULongToStr(unsigned long ulVal);
  61. CString DblToStr(double dblVal, int ndigits = 20);
  62. CString DblToStr(float fltVal);
  63. class CJetEngine
  64. {
  65. public:
  66. CJetEngine()
  67. {
  68. //;
  69. }
  70. virtual ~CJetEngine()
  71. {
  72. //;
  73. }
  74. static BOOL CompactDatabase(CString strDatabaseSource, CString strDatabaseDestination);
  75. static BOOL RefreshCache(ADODB::_Connection *pconn);
  76. };
  77. class CADODatabase
  78. {
  79. public:
  80. enum cadoConnectModeEnum
  81.     {
  82. connectModeUnknown = adModeUnknown,
  83. connectModeRead = adModeRead,
  84. connectModeWrite = adModeWrite,
  85. connectModeReadWrite = adModeReadWrite,
  86. connectModeShareDenyRead = adModeShareDenyRead,
  87. connectModeShareDenyWrite = adModeShareDenyWrite,
  88. connectModeShareExclusive = adModeShareExclusive,
  89. connectModeShareDenyNone = adModeShareDenyNone
  90.     };
  91. CADODatabase()
  92. {
  93. ::CoInitialize(NULL);
  94. m_pConnection = NULL;
  95. m_strConnection = _T("");
  96. m_strLastError = _T("");
  97. m_dwLastError = 0;
  98. m_pConnection.CreateInstance(__uuidof(Connection));
  99. m_nRecordsAffected = 0;
  100. m_nConnectionTimeout = 0;
  101. }
  102. virtual ~CADODatabase()
  103. {
  104. Close();
  105. m_pConnection.Release();
  106. m_pConnection = NULL;
  107. m_strConnection = _T("");
  108. m_strLastError = _T("");
  109. m_dwLastError = 0;
  110. ::CoUninitialize();
  111. }
  112. BOOL Open(LPCTSTR lpstrConnection = _T(""), LPCTSTR lpstrUserID = _T(""), LPCTSTR lpstrPassword = _T(""));
  113. _ConnectionPtr GetActiveConnection() 
  114. {return m_pConnection;};
  115. BOOL Execute(LPCTSTR lpstrExec);
  116. int GetRecordsAffected()
  117. {return m_nRecordsAffected;};
  118. DWORD GetRecordCount(_RecordsetPtr m_pRs);
  119. long BeginTransaction() 
  120. {return m_pConnection->BeginTrans();};
  121. long CommitTransaction() 
  122. {return m_pConnection->CommitTrans();};
  123. long RollbackTransaction() 
  124. {return m_pConnection->RollbackTrans();};
  125. BOOL IsOpen();
  126. void Close();
  127. void SetConnectionMode(cadoConnectModeEnum nMode)
  128. {m_pConnection->PutMode((enum ConnectModeEnum)nMode);};
  129. void SetConnectionString(LPCTSTR lpstrConnection)
  130. {m_strConnection = lpstrConnection;};
  131. CString GetConnectionString()
  132. {return m_strConnection;};
  133. CString GetLastErrorString() 
  134. {return m_strLastError;};
  135. DWORD GetLastError()
  136. {return m_dwLastError;};
  137. CString GetErrorDescription() 
  138. {return m_strErrorDescription;};
  139. void SetConnectionTimeout(long nConnectionTimeout = 30)
  140. {m_nConnectionTimeout = nConnectionTimeout;};
  141. protected:
  142. void dump_com_error(_com_error &e);
  143. public:
  144. _ConnectionPtr m_pConnection;
  145. protected:
  146. CString m_strConnection;
  147. CString m_strLastError;
  148. CString m_strErrorDescription;
  149. DWORD m_dwLastError;
  150. int m_nRecordsAffected;
  151. long m_nConnectionTimeout;
  152. };
  153. class CADORecordset
  154. {
  155. public:
  156. BOOL Clone(CADORecordset& pRs);
  157. enum cadoOpenEnum
  158. {
  159. openUnknown = 0,
  160. openQuery = 1,
  161. openTable = 2,
  162. openStoredProc = 3
  163. };
  164. enum cadoEditEnum
  165. {
  166. dbEditNone = 0,
  167. dbEditNew = 1,
  168. dbEdit = 2
  169. };
  170. enum cadoPositionEnum
  171. {
  172. positionUnknown = -1,
  173. positionBOF = -2,
  174. positionEOF = -3
  175. };
  176. enum cadoSearchEnum
  177. {
  178. searchForward = 1,
  179. searchBackward = -1
  180. };
  181. enum cadoDataType
  182. {
  183. typeEmpty = ADODB::adEmpty,
  184. typeTinyInt = ADODB::adTinyInt,
  185. typeSmallInt = ADODB::adSmallInt,
  186. typeInteger = ADODB::adInteger,
  187. typeBigInt = ADODB::adBigInt,
  188. typeUnsignedTinyInt = ADODB::adUnsignedTinyInt,
  189. typeUnsignedSmallInt = ADODB::adUnsignedSmallInt,
  190. typeUnsignedInt = ADODB::adUnsignedInt,
  191. typeUnsignedBigInt = ADODB::adUnsignedBigInt,
  192. typeSingle = ADODB::adSingle,
  193. typeDouble = ADODB::adDouble,
  194. typeCurrency = ADODB::adCurrency,
  195. typeDecimal = ADODB::adDecimal,
  196. typeNumeric = ADODB::adNumeric,
  197. typeBoolean = ADODB::adBoolean,
  198. typeError = ADODB::adError,
  199. typeUserDefined = ADODB::adUserDefined,
  200. typeVariant = ADODB::adVariant,
  201. typeIDispatch = ADODB::adIDispatch,
  202. typeIUnknown = ADODB::adIUnknown,
  203. typeGUID = ADODB::adGUID,
  204. typeDate = ADODB::adDate,
  205. typeDBDate = ADODB::adDBDate,
  206. typeDBTime = ADODB::adDBTime,
  207. typeDBTimeStamp = ADODB::adDBTimeStamp,
  208. typeBSTR = ADODB::adBSTR,
  209. typeChar = ADODB::adChar,
  210. typeVarChar = ADODB::adVarChar,
  211. typeLongVarChar = ADODB::adLongVarChar,
  212. typeWChar = ADODB::adWChar,
  213. typeVarWChar = ADODB::adVarWChar,
  214. typeLongVarWChar = ADODB::adLongVarWChar,
  215. typeBinary = ADODB::adBinary,
  216. typeVarBinary = ADODB::adVarBinary,
  217. typeLongVarBinary = ADODB::adLongVarBinary,
  218. typeChapter = ADODB::adChapter,
  219. typeFileTime = ADODB::adFileTime,
  220. typePropVariant = ADODB::adPropVariant,
  221. typeVarNumeric = ADODB::adVarNumeric,
  222. typeArray = ADODB::adVariant
  223. };
  224. enum cadoSchemaType 
  225. {
  226. schemaSpecific = adSchemaProviderSpecific,
  227. schemaAsserts = adSchemaAsserts,
  228. schemaCatalog = adSchemaCatalogs,
  229. schemaCharacterSet = adSchemaCharacterSets,
  230. schemaCollections = adSchemaCollations,
  231. schemaColumns = adSchemaColumns,
  232. schemaConstraints = adSchemaCheckConstraints,
  233. schemaConstraintColumnUsage = adSchemaConstraintColumnUsage,
  234. schemaConstraintTableUsage  = adSchemaConstraintTableUsage,
  235. shemaKeyColumnUsage = adSchemaKeyColumnUsage,
  236. schemaTableConstraints = adSchemaTableConstraints,
  237. schemaColumnsDomainUsage = adSchemaColumnsDomainUsage,
  238. schemaIndexes = adSchemaIndexes,
  239. schemaColumnPrivileges = adSchemaColumnPrivileges,
  240. schemaTablePrivileges = adSchemaTablePrivileges,
  241. schemaUsagePrivileges = adSchemaUsagePrivileges,
  242. schemaProcedures = adSchemaProcedures,
  243. schemaTables = adSchemaTables,
  244. schemaProviderTypes = adSchemaProviderTypes,
  245. schemaViews = adSchemaViews,
  246. schemaViewTableUsage = adSchemaViewTableUsage,
  247. schemaProcedureParameters = adSchemaProcedureParameters,
  248. schemaForeignKeys = adSchemaForeignKeys,
  249. schemaPrimaryKeys = adSchemaPrimaryKeys,
  250. schemaProcedureColumns = adSchemaProcedureColumns,
  251. schemaDBInfoKeywords = adSchemaDBInfoKeywords,
  252. schemaDBInfoLiterals = adSchemaDBInfoLiterals,
  253. schemaCubes = adSchemaCubes,
  254. schemaDimensions = adSchemaDimensions,
  255. schemaHierarchies  = adSchemaHierarchies, 
  256. schemaLevels = adSchemaLevels,
  257. schemaMeasures = adSchemaMeasures,
  258. schemaProperties = adSchemaProperties,
  259. schemaMembers = adSchemaMembers,
  260. }; 
  261. BOOL SetFieldValue(int nIndex, int nValue);
  262. BOOL SetFieldValue(LPCTSTR lpFieldName, int nValue);
  263. BOOL SetFieldValue(int nIndex, long lValue);
  264. BOOL SetFieldValue(LPCTSTR lpFieldName, long lValue);
  265. BOOL SetFieldValue(int nIndex, unsigned long lValue);
  266. BOOL SetFieldValue(LPCTSTR lpFieldName, unsigned long lValue);
  267. BOOL SetFieldValue(int nIndex, double dblValue);
  268. BOOL SetFieldValue(LPCTSTR lpFieldName, double dblValue);
  269. BOOL SetFieldValue(int nIndex, CString strValue);
  270. BOOL SetFieldValue(LPCTSTR lpFieldName, CString strValue);
  271. BOOL SetFieldValue(int nIndex, COleDateTime time);
  272. BOOL SetFieldValue(LPCTSTR lpFieldName, COleDateTime time);
  273. BOOL SetFieldValue(int nIndex, bool bValue);
  274. BOOL SetFieldValue(LPCTSTR lpFieldName, bool bValue);
  275. BOOL SetFieldValue(int nIndex, COleCurrency cyValue);
  276. BOOL SetFieldValue(LPCTSTR lpFieldName, COleCurrency cyValue);
  277. BOOL SetFieldValue(int nIndex, _variant_t vtValue);
  278. BOOL SetFieldValue(LPCTSTR lpFieldName, _variant_t vtValue);
  279. BOOL SetFieldEmpty(int nIndex);
  280. BOOL SetFieldEmpty(LPCTSTR lpFieldName);
  281. void CancelUpdate();
  282. BOOL Update();
  283. void Edit();
  284. BOOL AddNew();
  285. BOOL AddNew(CADORecordBinding &pAdoRecordBinding);
  286. BOOL Find(LPCTSTR lpFind, int nSearchDirection = CADORecordset::searchForward);
  287. BOOL FindFirst(LPCTSTR lpFind);
  288. BOOL FindNext();
  289. CADORecordset();
  290. CADORecordset(CADODatabase* pAdoDatabase);
  291. virtual ~CADORecordset()
  292. {
  293. Close();
  294. if(m_pRecordset)
  295. m_pRecordset.Release();
  296. if(m_pCmd)
  297. m_pCmd.Release();
  298. m_pRecordset = NULL;
  299. m_pCmd = NULL;
  300. m_pRecBinding = NULL;
  301. m_strQuery = _T("");
  302. m_strLastError = _T("");
  303. m_dwLastError = 0;
  304. m_nEditStatus = dbEditNone;
  305. }
  306. CString GetQuery() 
  307. {return m_strQuery;};
  308. void SetQuery(LPCSTR strQuery) 
  309. {m_strQuery = strQuery;};
  310. BOOL RecordBinding(CADORecordBinding &pAdoRecordBinding);
  311. DWORD GetRecordCount();
  312. BOOL IsOpen();
  313. void Close();
  314. BOOL Open(_ConnectionPtr mpdb, LPCTSTR lpstrExec = _T(""), int nOption = CADORecordset::openUnknown);
  315. BOOL Open(LPCTSTR lpstrExec = _T(""), int nOption = CADORecordset::openUnknown);
  316. BOOL OpenSchema(int nSchema, LPCTSTR SchemaID = _T(""));
  317. long GetFieldCount()
  318. {return m_pRecordset->Fields->GetCount();};
  319. BOOL GetFieldValue(LPCTSTR lpFieldName, int& nValue);
  320. BOOL GetFieldValue(int nIndex, int& nValue);
  321. BOOL GetFieldValue(LPCTSTR lpFieldName, long& lValue);
  322. BOOL GetFieldValue(int nIndex, long& lValue);
  323. BOOL GetFieldValue(LPCTSTR lpFieldName, unsigned long& ulValue);
  324. BOOL GetFieldValue(int nIndex, unsigned long& ulValue);
  325. BOOL GetFieldValue(LPCTSTR lpFieldName, double& dbValue);
  326. BOOL GetFieldValue(int nIndex, double& dbValue);
  327. BOOL GetFieldValue(LPCTSTR lpFieldName, CString& strValue, CString strDateFormat = _T(""));
  328. BOOL GetFieldValue(int nIndex, CString& strValue, CString strDateFormat = _T(""));
  329. BOOL GetFieldValue(LPCTSTR lpFieldName, COleDateTime& time);
  330. BOOL GetFieldValue(int nIndex, COleDateTime& time);
  331. BOOL GetFieldValue(int nIndex, bool& bValue);
  332. BOOL GetFieldValue(LPCTSTR lpFieldName, bool& bValue);
  333. BOOL GetFieldValue(int nIndex, COleCurrency& cyValue);
  334. BOOL GetFieldValue(LPCTSTR lpFieldName, COleCurrency& cyValue);
  335. BOOL GetFieldValue(int nIndex, _variant_t& vtValue);
  336. BOOL GetFieldValue(LPCTSTR lpFieldName, _variant_t& vtValue);
  337. BOOL IsFieldNull(LPCTSTR lpFieldName);
  338. BOOL IsFieldNull(int nIndex);
  339. BOOL IsFieldEmpty(LPCTSTR lpFieldName);
  340. BOOL IsFieldEmpty(int nIndex);
  341. BOOL IsEof()
  342. {return m_pRecordset->EndOfFile == VARIANT_TRUE;};
  343. BOOL IsEOF()
  344. {return m_pRecordset->EndOfFile == VARIANT_TRUE;};
  345. BOOL IsBof()
  346. {return m_pRecordset->BOF == VARIANT_TRUE;};
  347. BOOL IsBOF()
  348. {return m_pRecordset->BOF == VARIANT_TRUE;};
  349. void MoveFirst() 
  350. {m_pRecordset->MoveFirst();};
  351. void MoveNext() 
  352. {m_pRecordset->MoveNext();};
  353. void MovePrevious() 
  354. {m_pRecordset->MovePrevious();};
  355. void MoveLast() 
  356. {m_pRecordset->MoveLast();};
  357. long GetAbsolutePage()
  358. {return m_pRecordset->GetAbsolutePage();};
  359. void SetAbsolutePage(int nPage)
  360. {m_pRecordset->PutAbsolutePage((enum PositionEnum)nPage);};
  361. long GetPageCount()
  362. {return m_pRecordset->GetPageCount();};
  363. long GetPageSize()
  364. {return m_pRecordset->GetPageSize();};
  365. void SetPageSize(int nSize)
  366. {m_pRecordset->PutPageSize(nSize);};
  367. long GetAbsolutePosition()
  368. {return m_pRecordset->GetAbsolutePosition();};
  369. void SetAbsolutePosition(int nPosition)
  370. {m_pRecordset->PutAbsolutePosition((enum PositionEnum)nPosition);};
  371. BOOL GetFieldInfo(LPCTSTR lpFieldName, CADOFieldInfo* fldInfo);
  372. BOOL GetFieldInfo(int nIndex, CADOFieldInfo* fldInfo);
  373. BOOL AppendChunk(LPCTSTR lpFieldName, LPVOID lpData, UINT nBytes);
  374. BOOL AppendChunk(int nIndex, LPVOID lpData, UINT nBytes);
  375. BOOL GetChunk(LPCTSTR lpFieldName, CString& strValue);
  376. BOOL GetChunk(int nIndex, CString& strValue);
  377. BOOL GetChunk(LPCTSTR lpFieldName, LPVOID pData);
  378. BOOL GetChunk(int nIndex, LPVOID pData);
  379. CString GetString(LPCTSTR lpCols, LPCTSTR lpRows, LPCTSTR lpNull, long numRows = 0);
  380. CString GetLastErrorString() 
  381. {return m_strLastError;};
  382. DWORD GetLastError()
  383. {return m_dwLastError;};
  384. void GetBookmark()
  385. {m_varBookmark = m_pRecordset->Bookmark;};
  386. BOOL SetBookmark();
  387. BOOL Delete();
  388. BOOL IsConnectionOpen()
  389. {return m_pConnection != NULL && m_pConnection->GetState() != adStateClosed;};
  390. _RecordsetPtr GetRecordset()
  391. {return m_pRecordset;};
  392. _ConnectionPtr GetActiveConnection() 
  393. {return m_pConnection;};
  394. BOOL SetFilter(LPCTSTR strFilter);
  395. BOOL SetSort(LPCTSTR lpstrCriteria);
  396. BOOL SaveAsXML(LPCTSTR lpstrXMLFile);
  397. BOOL OpenXML(LPCTSTR lpstrXMLFile);
  398. BOOL Execute(CADOCommand* pCommand);
  399. BOOL Requery();
  400. //hpxs add
  401. _variant_t GetBookFind()
  402. {return m_varBookFind;};
  403. public:
  404. _RecordsetPtr m_pRecordset;
  405. _CommandPtr m_pCmd;
  406. protected:
  407. _ConnectionPtr m_pConnection;
  408. int m_nSearchDirection;
  409. CString m_strFind;
  410. _variant_t m_varBookFind;
  411. _variant_t m_varBookmark;
  412. int m_nEditStatus;
  413. CString m_strLastError;
  414. DWORD m_dwLastError;
  415. void dump_com_error(_com_error &e);
  416. IADORecordBinding *m_pRecBinding;
  417. CString m_strQuery;
  418. protected:
  419. BOOL PutFieldValue(LPCTSTR lpFieldName, _variant_t vtFld);
  420. BOOL PutFieldValue(_variant_t vtIndex, _variant_t vtFld);
  421. BOOL GetFieldInfo(FieldPtr pField, CADOFieldInfo* fldInfo);
  422. BOOL GetChunk(FieldPtr pField, CString& strValue);
  423. BOOL GetChunk(FieldPtr pField, LPVOID lpData);
  424. BOOL AppendChunk(FieldPtr pField, LPVOID lpData, UINT nBytes);
  425. };
  426. class CADOParameter
  427. {
  428. public:
  429. enum cadoParameterDirection
  430. {
  431. paramUnknown = adParamUnknown,
  432. paramInput = adParamInput,
  433. paramOutput = adParamOutput,
  434. paramInputOutput = adParamInputOutput,
  435. paramReturnValue = adParamReturnValue 
  436. };
  437. CADOParameter(int nType, long lSize = 0, int nDirection = paramInput, CString strName = _T(""));
  438. virtual ~CADOParameter()
  439. {
  440. m_pParameter.Release();
  441. m_pParameter = NULL;
  442. m_strName = _T("");
  443. }
  444. BOOL SetValue(int nValue);
  445. BOOL SetValue(long lValue);
  446. BOOL SetValue(double dbValue);
  447. BOOL SetValue(CString strValue);
  448. BOOL SetValue(COleDateTime time);
  449. BOOL SetValue(_variant_t vtValue);
  450. BOOL GetValue(int& nValue);
  451. BOOL GetValue(long& lValue);
  452. BOOL GetValue(double& dbValue);
  453. BOOL GetValue(CString& strValue, CString strDateFormat = _T(""));
  454. BOOL GetValue(COleDateTime& time);
  455. BOOL GetValue(_variant_t& vtValue);
  456. void SetPrecision(int nPrecision)
  457. {m_pParameter->PutPrecision(nPrecision);};
  458. void SetScale(int nScale)
  459. {m_pParameter->PutNumericScale(nScale);};
  460. void SetName(CString strName)
  461. {m_strName = strName;};
  462. CString GetName()
  463. {return m_strName;};
  464. int GetType()
  465. {return m_nType;};
  466. _ParameterPtr GetParameter()
  467. {return m_pParameter;};
  468. protected:
  469. void dump_com_error(_com_error &e);
  470. protected:
  471. _ParameterPtr m_pParameter;
  472. CString m_strName;
  473. int m_nType;
  474. CString m_strLastError;
  475. DWORD m_dwLastError;
  476. };
  477. class CADOCommand
  478. {
  479. public:
  480. enum cadoCommandType
  481. {
  482. typeCmdText = adCmdText,
  483. typeCmdTable = adCmdTable,
  484. typeCmdTableDirect = adCmdTableDirect,
  485. typeCmdStoredProc = adCmdStoredProc,
  486. typeCmdUnknown = adCmdUnknown,
  487. typeCmdFile = adCmdFile
  488. };
  489. CADOCommand(CADODatabase* pAdoDatabase, CString strCommandText = _T(""), int nCommandType = typeCmdStoredProc);
  490. virtual ~CADOCommand()
  491. {
  492. ::SysFreeString(m_pCommand->CommandText);
  493. m_pCommand.Release();
  494. m_pCommand = NULL;
  495. m_strCommandText = _T("");
  496. }
  497. void SetTimeout(long nTimeOut)
  498. {m_pCommand->PutCommandTimeout(nTimeOut);};
  499. void SetText(CString strCommandText);
  500. void SetType(int nCommandType);
  501. int GetType()
  502. {return m_nCommandType;};
  503. BOOL AddParameter(CADOParameter* pAdoParameter);
  504. BOOL AddParameter(CString strName, int nType, int nDirection, long lSize, int nValue);
  505. BOOL AddParameter(CString strName, int nType, int nDirection, long lSize, long lValue);
  506. BOOL AddParameter(CString strName, int nType, int nDirection, long lSize, double dblValue, int nPrecision = 0, int nScale = 0);
  507. BOOL AddParameter(CString strName, int nType, int nDirection, long lSize, CString strValue);
  508. BOOL AddParameter(CString strName, int nType, int nDirection, long lSize, COleDateTime time);
  509. BOOL AddParameter(CString strName, int nType, int nDirection, long lSize, _variant_t vtValue, int nPrecision = 0, int nScale = 0);
  510. CString GetText()
  511. {return m_strCommandText;};
  512. BOOL Execute(int nCommandType = typeCmdStoredProc);
  513. int GetRecordsAffected()
  514. {return m_nRecordsAffected;};
  515. _CommandPtr GetCommand()
  516. {return m_pCommand;};
  517. protected:
  518. void dump_com_error(_com_error &e);
  519. protected:
  520. _CommandPtr m_pCommand;
  521. int m_nCommandType;
  522. int m_nRecordsAffected;
  523. CString m_strCommandText;
  524. CString m_strLastError;
  525. DWORD m_dwLastError;
  526. };
  527. /////////////////////////////////////////////////////////////////////
  528. //
  529. // CADOException Class
  530. //
  531. class CADOException
  532. {
  533. public:
  534. CADOException() :
  535. m_lErrorCode(0),
  536. m_strError(_T(""))
  537. {
  538. }
  539. CADOException(long lErrorCode) :
  540. m_lErrorCode(lErrorCode),
  541. m_strError(_T(""))
  542. {
  543. }
  544. CADOException(long lErrorCode, const CString& strError) :
  545. m_lErrorCode(lErrorCode),
  546. m_strError(strError)
  547. {
  548. }
  549. CADOException(const CString& strError) :
  550. m_lErrorCode(0),
  551. m_strError(strError)
  552. {
  553. }
  554. CADOException(long lErrorCode, const char* szError) :
  555. m_lErrorCode(lErrorCode),
  556. m_strError(szError)
  557. {
  558. }
  559. CADOException(const char* szError) :
  560. m_lErrorCode(0),
  561. m_strError(szError)
  562. {
  563. }
  564. virtual ~CADOException()
  565. {
  566. }
  567. CString GetErrorMessage() const
  568. {return m_strError;};
  569. void SetErrorMessage(LPCSTR lpstrError = _T(""))
  570. {m_strError = lpstrError;};
  571. long GetError()
  572. {return m_lErrorCode;};
  573. void SetError(long lErrorCode = 0)
  574. {m_lErrorCode = lErrorCode;};
  575. protected:
  576. CString m_strError;
  577. long m_lErrorCode;
  578. };
  579. #endif //AFX_ADO2_H_INCLUDED_