DBInterface.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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. int nDays;
  24. int nSMSType;
  25. int nChoose;
  26. }SmsType,*pSmsType;
  27. class CDBInterface
  28. {
  29. CDBInterface(void);
  30. public:
  31. ~CDBInterface(void);
  32. static CDBInterface *GetInstance()
  33. {
  34. static CDBInterface Instance;
  35. return &Instance;
  36. }
  37. const BOOL IsOpen(){
  38. return m_bOpen;
  39. }
  40. const CString& GetConnectErrorDescriptor() const{
  41. return m_strConnectErrorDescriptor;
  42. }
  43. // 打开数据库连接.
  44. BOOL OpenDatabase(LPCTSTR lpSQLConnectString = NULL);
  45. void CloseDatabase();
  46. const CDatabase *GetDatabaseInstance(){
  47. return m_pdbInstance;
  48. }
  49. // 执行SQL语句,不返回记录集
  50. BOOL Execute(LPCTSTR lpSQL);
  51. int GetSelectCount(LPCTSTR lpTableName, LPCTSTR lpFilter); // 获取查询记录数;
  52. private:
  53. BOOL m_bOpen;
  54. TCHAR m_szConnectString[MAX_PATH];
  55. CDatabase *m_pdbInstance;
  56. ThreadSection s_critSection;
  57. ThreadSection *ReturnSection() {
  58. return &s_critSection;
  59. }
  60. CString m_strConnectErrorDescriptor;
  61. public:
  62. BOOL GetSMSType(std::vector<SmsType> &vtSMSInfo,BOOL bhospitalcheck1,std::vector<SmsType> &vtSMSInfo2,BOOL bhospitalcheck2);
  63. BOOL GetTableChildmsg(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter = NULL);
  64. BOOL GetTableClient2(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter = NULL);
  65. BOOL GetTableClient3(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter = NULL);
  66. #if JEFF_DELETE_ON
  67. void GetTableVersion(CStringArray &strListArray, LPCTSTR lpfilter = NULL);
  68. #endif
  69. BOOL GetTableSendreg(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter = NULL);
  70. BOOL GetTableSendregcard(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter = NULL);
  71. BOOL GetTableHospitalclient(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter = NULL);
  72. BOOL GetDBViewDindanclientRecord(CArray<CStringArray, CStringArray> &strListArray, LPCTSTR lpfilter = NULL);
  73. BOOL GetSMSInfo(SMSInfo &tSMSInfo);
  74. static BOOL m_bEndofThread;
  75. HANDLE m_hWaitableTimer;
  76. HANDLE m_hReConnectEvent;
  77. HANDLE m_hReConnectThread;
  78. int StartThread();
  79. int EndofThread();
  80. static DWORD WINAPI ReConnectDatabaseThread(LPVOID lpPara);
  81. BOOL m_bSolve;
  82. BOOL SolveDBError(CONST DWORD &dwError,LPCTSTR lpErrorString = NULL);
  83. };
  84. #endif