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