Database.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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. BOOL SetBinaryField(std::string strCondition, void* pDataIn, int nDataLen);
  46. BOOL GetBinaryField(std::string strCondition, void** lpDataOut, unsigned long &nDataLen);
  47. // 初始化连接;
  48. BOOL Init(std::string host, std::string user, std::string password, std::string db);
  49. // 执行语句;
  50. BOOL ExcuteSQL(std::string sql);
  51. // 供应商表;
  52. BOOL InserProvider(const STProvider& provider);
  53. BOOL InserProvider(std::string name, std::string note);
  54. BOOL DeleteProvider(std::string name);
  55. BOOL UpdateProvider(std::string name, const STProvider &provider);
  56. BOOL QueryProvider(std::vector<STProvider>& vtProvider);
  57. // 机芯表;
  58. BOOL InserSoc(const STSOC& soc);
  59. BOOL InserSoc(std::string name, std::string provider, std::string note);
  60. BOOL DeleteSoc(std::string name);
  61. BOOL UpdateSoc(std::string name, const STSOC& soc);
  62. BOOL QuerySoc(std::vector<STSOC>& vtSoc);
  63. // 品牌表;
  64. BOOL InsertBrand(const STBranch& brand);
  65. BOOL InsertBrand(std::string name, std::string note);
  66. BOOL DeleteBrand(std::string name);
  67. BOOL UpdateBrand(std::string name, const STBranch& brand);
  68. BOOL QueryBrand(std::vector<STBranch>& vtBrand);
  69. // 导入/导出品牌logo;
  70. BOOL ImportLogo(std::string name, std::string file);
  71. BOOL ExportLogo(std::string name, std::string file);
  72. // 季度表;
  73. BOOL InsertQuarter(const STQuarter& quarter);
  74. BOOL InsertQuarter(std::string name, std::string scp, std::string note);
  75. BOOL DeleteQuarter(std::string name);
  76. BOOL UpdateQuarter(std::string name, const STQuarter& quarter);
  77. BOOL QueryQuarter(std::vector<STQuarter>& vtQuarter);
  78. // 服务器表;
  79. BOOL InsertServer(const STServer& Server);
  80. BOOL InsertServer(std::string name, std::string ip, std::string type, std::string user, std::string password, std::string note);
  81. BOOL DeleteServer(std::string name);
  82. BOOL UpdateServer(std::string name, const STServer& Server);
  83. BOOL QueryServer(std::vector<STServer>& vtServer);
  84. };
  85. #endif