Database.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. #ifndef __DATABASE_20201102__
  2. #define __DATABASE_20201102__
  3. #pragma once
  4. #include "table.h"
  5. class CDatabase
  6. {
  7. CDatabase();
  8. public:
  9. ~CDatabase();
  10. static CDatabase* GetInstance()
  11. {
  12. static CDatabase* pInstance = NULL;
  13. if (pInstance == NULL) {
  14. pInstance = new CDatabase();
  15. }
  16. return pInstance;
  17. }
  18. protected:
  19. private:
  20. MYSQL* m_pConn;
  21. BOOL m_bConnected;
  22. const char* m_pError;
  23. std::string m_strUser;
  24. std::string m_strPassword;
  25. std::string m_strHost;
  26. static char* m_spImage;
  27. // 该函数只能单线程使用;
  28. static char* ConvertBinaryToString(MYSQL *pConn, std::string file)
  29. {
  30. if (m_spImage != NULL)
  31. delete[]m_spImage;
  32. m_spImage = NULL;
  33. if (!PathFileExists(file.c_str()))
  34. return NULL;
  35. FILE* pf = NULL;
  36. if (0 != fopen_s(&pf, file.c_str(), _T("rb")))
  37. return NULL;
  38. if (pf == NULL)
  39. return NULL;
  40. fseek(pf, 0, SEEK_END);
  41. long nlen = ftell(pf);
  42. fseek(pf, 0, SEEK_SET);
  43. byte *pData = new byte[nlen];
  44. fread(pData, nlen, 1, pf);
  45. fclose(pf);
  46. m_spImage = new char[nlen + 10];
  47. mysql_real_escape_string(pConn, m_spImage, (char*)pData, nlen);
  48. if (pData)
  49. delete[]pData;
  50. return m_spImage;
  51. }
  52. public:
  53. // 设置二进制字段值;
  54. BOOL SetBinaryField(std::string strCondition, void* pDataIn, int nDataLen);
  55. // 获取二进制字段值;
  56. BOOL GetBinaryField(std::string strCondition, void** lpDataOut, unsigned long &nDataLen);
  57. BOOL IsOpen() { return m_bConnected; }
  58. // 初始化连接;
  59. BOOL Init(std::string host, std::string user, std::string password, std::string db);
  60. // 执行语句;
  61. BOOL ExcuteSQL(std::string sql);
  62. // 机芯表;
  63. BOOL InserSoc(const STSOC& soc);
  64. BOOL InserSoc(std::string name, std::string provider, std::string note);
  65. BOOL DeleteSoc(std::string name);
  66. BOOL UpdateSoc(std::string name, const STSOC& soc);
  67. BOOL QuerySoc(std::vector<STSOC>& vtSoc);
  68. // 品牌表;
  69. BOOL InsertBrand(const STBrand& brand);
  70. BOOL InsertBrand(std::string name, std::string fav_cfg = _T(""), std::string local_cfg = _T(""), std::string apps_cfg = _T(""), std::string note = _T(""));
  71. BOOL DeleteBrand(std::string name);
  72. BOOL UpdateBrand(std::string name, const STBrand& brand);
  73. BOOL QueryBrand(std::vector<STBrand>& vtBrand);
  74. // 导入/导出品牌logo;
  75. BOOL ImportBrandLogo(std::string brand, std::string file);
  76. BOOL ExportBrandLogo(std::string brand, std::string file);
  77. // 季度表;
  78. BOOL InsertQuarter(const STQuarter& quarter);
  79. BOOL InsertQuarter(std::string name, std::string scp, std::string note);
  80. BOOL DeleteQuarter(std::string name);
  81. BOOL UpdateQuarter(std::string name, const STQuarter& quarter);
  82. BOOL QueryQuarter(std::vector<STQuarter>& vtQuarter);
  83. // 季度品牌表;
  84. BOOL InsertQBrand(const STQbrand& QBrand);
  85. BOOL DeleteQBrand(std::string soc, std::string quarter, std::string brand);
  86. BOOL UpdateQBrand(std::string brand, STQbrand& QBrand);
  87. BOOL UpdateQBrand(std::string soc, std::string quarter, std::string brand, STQbrand &QBrand);
  88. BOOL QueryQBrand(std::vector<STQbrand>& vtQBrand);
  89. // 导入/导出品牌logo;
  90. BOOL ImportQBrandLogo(std::string file, std::string brand, std::string soc, std::string quarter);
  91. BOOL ExportQBrandLogo(std::string file, std::string brand, std::string soc, std::string quarter);
  92. // 用户表;
  93. BOOL InsertUser(const STUser& user);
  94. BOOL InsertUser(std::string user, std::string password, std::string permission);
  95. BOOL DeleteUser(std::string user);
  96. BOOL UpdateUser(std::string user, const STUser& stUser);
  97. BOOL QueryUser(std::vector<STUser>& vtUser);
  98. // 服务器表;
  99. BOOL InsertServer(const STServer& Server);
  100. BOOL InsertServer(std::string name, std::string ip, std::string type, std::string user, std::string password, std::string note);
  101. BOOL DeleteServer(std::string name);
  102. BOOL UpdateServer(std::string name, const STServer& Server);
  103. BOOL QueryServer(std::vector<STServer>& vtServer);
  104. // 分支表;
  105. BOOL InsertBranch(const STBranch& branch);
  106. BOOL DeleteBranch(std::string branch);
  107. BOOL UpdateBranch(std::string branch, const STBranch& stBranch);
  108. BOOL QueryBranch(std::vector<STBranch>& vtBranch);
  109. };
  110. #endif