DBInterface.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #ifndef _JEFF_DBINTERFACE_HEAD_
  2. #define _JEFF_DBINTERFACE_HEAD_
  3. //
  4. // Jeff.Create at 2014.07.14
  5. // 数据库专门;
  6. //
  7. #include <afxdb.h> // CDatabase类头文件;
  8. #include "lonindata.h"
  9. #include "renyuan.h"
  10. #include "CritSection.h"
  11. #pragma once
  12. const int LOGINDATA = 1;
  13. class CDBInterface
  14. {
  15. private:
  16. CDBInterface(void);
  17. ~CDBInterface(void);
  18. public:
  19. static CDBInterface *GetInstance()
  20. {
  21. static CDBInterface Instance;
  22. return &Instance;
  23. }
  24. const BOOL IsOpen(){return m_bOpen;}
  25. const CString& GetConnectErrorDescriptor() const{
  26. return m_strConnectErrorDescriptor;
  27. }
  28. void GetIniInfo(const char *szPath=NULL, const char *szIniName=NULL); // Jeff Add:获取ini文件信息;
  29. // 打开数据库连接.
  30. BOOL OpenDatabase(const TCHAR *szSQLConnectString=NULL);
  31. void CloseDatabase();
  32. CDatabase *GetDatabaseInstance(){return m_pdbInstance;}
  33. // 执行SQL语句,不返回记录集
  34. int Execute(LPCTSTR pSql);
  35. DWORD GetSelectCount(CString* pTableName, CString* pFilter = NULL); // 获取查询记录数;
  36. private:
  37. BOOL m_bOpen;
  38. TCHAR m_szConnectString[MAX_PATH+1];
  39. CDatabase *m_pdbInstance;
  40. protected:
  41. ThreadSection s_critSection;
  42. ThreadSection *ReturnSection() {
  43. return &s_critSection;
  44. }
  45. HANDLE m_hReConnectEvent;
  46. HANDLE m_hReConnectThread;
  47. int StartThread();
  48. int EndofThread();
  49. static DWORD WINAPI ReConnectDatabaseThread(LPVOID lpPara);
  50. CString m_strConnectErrorDescriptor;
  51. public:
  52. BOOL m_bSolve;
  53. BOOL SolveDBError(CONST DWORD &dwError,LPCTSTR lpErrorString = NULL);
  54. BOOL GetDataBySelect(CArray<CStringArray, CStringArray>& arr, const UINT nTable, std::vector<CString>& vFieldName, CString* pfilter = NULL, CString* pSort = NULL);
  55. void GetTableNameByType(const UINT nTable, CString& strTableName);
  56. };
  57. #endif