DBInterface.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #ifndef _JEFF_DBINTERFACE_HEAD_
  2. #define _JEFF_DBINTERFACE_HEAD_
  3. //
  4. // Jeff.Create at 2014.07.14
  5. // 数据库处理;
  6. //
  7. #include <vector>
  8. #include <afxdb.h> // CDatabase类头文件;
  9. #include "TableChildmsg.h"
  10. #include "TableClient2.h"
  11. #include "TableClient3.h"
  12. #include "TableHospitalclient.h"
  13. #include "TableSendreg.h"
  14. #include "TableSendregcard.h"
  15. #include "TableVersion.h"
  16. #include "DBViewDindanclient.h"
  17. #include "CritSection.h"
  18. #pragma once
  19. // Jeff.--已实现;
  20. // 当SQL执行错误为网络连接错误或数据库服务不存在,抛出函数,启动重连数据库线程.
  21. // 重连线程在成功连接数据库后,自动结束,不做循环;
  22. typedef struct _ST_SMSTYPE_
  23. {
  24. int TypeOfMsg;
  25. int nDays;
  26. //CString strTypeOfMsg;
  27. //CString strDays;
  28. }SmsType,*pSmsType;
  29. class CDBInterface
  30. {
  31. CDBInterface(void);
  32. public:
  33. ~CDBInterface(void);
  34. static CDBInterface *GetInstance()
  35. {
  36. static CDBInterface Instance;
  37. return &Instance;
  38. }
  39. const BOOL IsOpen(){
  40. return m_bOpen;
  41. }
  42. const CString& GetConnectErrorDescriptor() const{
  43. return m_strConnectErrorDescriptor;
  44. }
  45. // 打开数据库连接.
  46. BOOL OpenDatabase(LPCTSTR lpSQLConnectString = NULL);
  47. void CloseDatabase();
  48. const CDatabase *GetDatabaseInstance(){
  49. return m_pdbInstance;
  50. }
  51. // 执行SQL语句,不返回记录集
  52. BOOL Execute(LPCTSTR lpSQL);
  53. int GetSelectCount(LPCTSTR lpTableName, LPCTSTR lpFilter); // 获取查询记录数;
  54. private:
  55. BOOL m_bOpen;
  56. TCHAR m_szConnectString[MAX_PATH];
  57. CDatabase *m_pdbInstance;
  58. ThreadSection s_critSection;
  59. ThreadSection *ReturnSection() {
  60. return &s_critSection;
  61. }
  62. CString m_strConnectErrorDescriptor;
  63. public:
  64. BOOL GetSMSType(std::vector<SmsType> &vtSMSInfo,BOOL bhospitalcheck1,std::vector<SmsType> &vtSMSInfo2,BOOL bhospitalcheck2);
  65. BOOL GetTableChildmsg(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter = NULL);
  66. BOOL GetTableClient2(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter = NULL);
  67. BOOL GetTableClient3(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter = NULL);
  68. #if JEFF_DELETE_ON
  69. void GetTableVersion(CStringArray &strListArray, LPCTSTR lpfilter = NULL);
  70. #endif
  71. BOOL GetTableSendreg(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter = NULL);
  72. BOOL GetTableSendregcard(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter = NULL);
  73. BOOL GetTableHospitalclient(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter = NULL);
  74. BOOL GetDBViewDindanclientRecord(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter = NULL);
  75. BOOL GetSMSInfo(SMSInfo &tSMSInfo);
  76. static BOOL m_bEndofThread;
  77. HANDLE m_hWaitableTimer;
  78. HANDLE m_hReConnectEvent;
  79. HANDLE m_hReConnectThread;
  80. int StartThread();
  81. int EndofThread();
  82. static DWORD WINAPI ReConnectDatabaseThread(LPVOID lpPara);
  83. BOOL m_bSolve;
  84. BOOL SolveDBError(CONST DWORD &dwError,LPCTSTR lpErrorString = NULL);
  85. };
  86. #endif