DBConnection.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. /*************************************************************
  2. /* Copyright (C), 2008-2010, StoneU Tech. Co., Ltd.
  3. /* 文件名: DBConnection.h
  4. /* 作者: Jesse
  5. /* 创建日期: 2010-07-13
  6. /* 版本号: V1.0
  7. /* 描述:
  8. /* 其它:
  9. /* 主要类模块:
  10. /* 历史修改记录:
  11. 作者 时间 版本 描述
  12. Jesse 10/07/13 1.0 创建这个模块
  13. ***************************************************************/
  14. #ifndef _DBCONNECTION_H_
  15. #define _DBCONNECTION_H_
  16. #if _MSC_VER >= 1000
  17. #pragma once
  18. #endif // _MSC_VER >= 1000
  19. #ifdef STONU_DLL_EXPORTS
  20. #define STONU_DLL_API __declspec(dllexport)
  21. #else
  22. #define STONU_DLL_API __declspec(dllimport)
  23. #endif
  24. #include "ado.h"
  25. #include <list>
  26. using namespace std;
  27. namespace SToneUDB
  28. {
  29. const int DB_CONNECTION_STRING = 200;
  30. class STONU_DLL_API CDBConnection
  31. {
  32. public:
  33. // 构造函数
  34. CDBConnection();
  35. // 虚构函数
  36. ~CDBConnection();
  37. void Release();
  38. // 静态成员函数,提供全局访问的接口
  39. static CDBConnection* GetInstancePtr();
  40. static CDBConnection GetInstance();
  41. // 打开数据库连接,若连接成功,启动数据库连接检测线程
  42. bool OpenDataBase(char chConnectionString[DB_CONNECTION_STRING]);
  43. // 关闭数据库连接
  44. void CloseDataBase();
  45. // 获取数据库连接指针
  46. CADODatabase* GetADODataBase();
  47. // 获取数据库连接状态
  48. bool GetADODataBaseStatus();
  49. // 启动数据检测线程
  50. bool DBConnectionCheckThreadStart();
  51. // 关闭数据检测线程
  52. void DBConnectionCheckThreadStop();
  53. // 获取一个字段内容,多条记录用“,”号分割并存到pList1中(例:第一条记录字段1内容,第二条记录字段2内容)
  54. int GetFieldValueList1(char *pSql, list<string>& list1);
  55. // 获取两个字段内容
  56. int GetFieldValueList2(char *pSql, list<string>& list1, list<string>& list2);
  57. // 获取三个字段内容
  58. int GetFieldValueList3(char *pSql, list<string>& list1, list<string>& list2, list<string>& list3);
  59. // 获取四个字段内容
  60. int GetFieldValueList4(char *pSql, list<string>& list1, list<string>& list2, list<string>& list3, list<string>& list4);
  61. // 获取五个字段内容
  62. int GetFieldValueList5(char *pSql, list<string>& list1, list<string>& list2, list<string>& list3, list<string>& list4, list<string>& list5);
  63. // 获取六个字段内容
  64. int GetFieldValueList6(char *pSql, list<string>& list1, list<string>& list2, list<string>& list3, list<string>& list4, list<string>& list5, list<string>& list6);
  65. // 获取46个字段内容
  66. int GetFieldValueList46(char *pSql,
  67. list<string>& list1, list<string>& list2, list<string>& list3, list<string>& list4,
  68. list<string>& list5, list<string>& list6, list<string>& list7, list<string>& list8,
  69. list<string>& list9, list<string>& list10, list<string>& list11, list<string>& list12,
  70. list<string>& list13, list<string>& list14, list<string>& list15, list<string>& list16,
  71. list<string>& list17, list<string>& list18, list<string>& list19, list<string>& list20,
  72. list<string>& list21, list<string>& list22, list<string>& list23, list<string>& list24,
  73. list<string>& list25, list<string>& list26, list<string>& list27, list<string>& list28,
  74. list<string>& list29, list<string>& list30, list<string>& list31, list<string>& list32,
  75. list<string>& list33, list<string>& list34, list<string>& list35, list<string>& list36,
  76. list<string>& list37, list<string>& list38, list<string>& list39, list<string>& list40,
  77. list<string>& list41, list<string>& list42, list<string>& list43, list<string>& list44,
  78. list<string>& list45, list<string>& list46);
  79. // 获取68个字段内容
  80. int GetFieldValueList68(char *pSql,
  81. list<string>& list1, list<string>& list2, list<string>& list3, list<string>& list4,
  82. list<string>& list5, list<string>& list6, list<string>& list7, list<string>& list8,
  83. list<string>& list9, list<string>& list10, list<string>& list11, list<string>& list12,
  84. list<string>& list13, list<string>& list14, list<string>& list15, list<string>& list16,
  85. list<string>& list17, list<string>& list18, list<string>& list19, list<string>& list20,
  86. list<string>& list21, list<string>& list22, list<string>& list23, list<string>& list24,
  87. list<string>& list25, list<string>& list26, list<string>& list27, list<string>& list28,
  88. list<string>& list29, list<string>& list30, list<string>& list31, list<string>& list32,
  89. list<string>& list33, list<string>& list34, list<string>& list35, list<string>& list36,
  90. list<string>& list37, list<string>& list38, list<string>& list39, list<string>& list40,
  91. list<string>& list41, list<string>& list42, list<string>& list43, list<string>& list44,
  92. list<string>& list45, list<string>& list46, list<string>& list47, list<string>& list48,
  93. list<string>& list49, list<string>& list50, list<string>& list51, list<string>& list52,
  94. list<string>& list53, list<string>& list54, list<string>& list55, list<string>& list56,
  95. list<string>& list57, list<string>& list58, list<string>& list59, list<string>& list60,
  96. list<string>& list61, list<string>& list62, list<string>& list63, list<string>& list64,
  97. list<string>& list65, list<string>& list66, list<string>& list67, list<string>& list68);
  98. // 执行SQL语句,不返回记录集
  99. int Execute(char *pSql);
  100. // 打开数据库连接,若连接成功,启动数据库连接检测线程
  101. // 停止数据库连接检测线程,成功停止之后,关闭数据库连接
  102. // 检测数据库连接函数
  103. //
  104. private:
  105. // 全局惟一的一个实例,外部都通过该指针访问
  106. static CDBConnection* m_pDBConnection;
  107. // 线程句柄
  108. HANDLE m_hDBConnectionCheckThreadHandle;
  109. // 线程退出句柄
  110. HANDLE m_hRunObject;
  111. // ADO数据连接对象指针
  112. CADODatabase* m_pADODatabase;
  113. // ADO数据集对象指针,
  114. //CADORecordset* m_pADORSet;
  115. // 电脑轰鸣器状态, true:响
  116. bool m_bBeep;
  117. // 连接字符串
  118. char m_chConnectionString[DB_CONNECTION_STRING];
  119. static DWORD WINAPI DBConnectionCheckTreadProc(void *pPara);
  120. // 删除数据集
  121. void DeleteADORecordSet(CADORecordset* pRSet);
  122. // 打开数据集,成功返回TRUE,否则返回FALSE
  123. bool OpenADORecordSet(CADORecordset* pRSet, char *pSql);
  124. // 关闭数据集
  125. void CloseADORecordSet(CADORecordset* pRSet);
  126. // 判断连接对象是否打开
  127. bool GetADODateBaseStatus();
  128. };
  129. };
  130. #endif