S3PDBConnection.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:4k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //-----------------------------------------//
  2. //                                         //
  3. //  File : S3PDBConnection.cpp      //
  4. // Author : Yang Xiaodong            //
  5. // Modified : 8/24/2002                //
  6. //                                         //
  7. //-----------------------------------------//
  8. #include "S3PDBConnection.h"
  9. S3PDBConnection::S3PDBConnection():
  10. m_pRes( NULL )
  11. {
  12. Init();
  13. }
  14. S3PDBConnection::~S3PDBConnection()
  15. {
  16. }
  17. void S3PDBConnection::Close()
  18. {
  19. S3PDBConnectionPool::Instance()->SetDBConFree( m_info.iDBIdentifier, m_info.dwConID );
  20. if ( NULL != m_info.pCon )
  21. {
  22. Init();
  23. }
  24. m_pRes = NULL;
  25. delete this;
  26. }
  27. DWORD S3PDBConnection::GetRes()
  28. {
  29. return m_pRes;
  30. }
  31. BOOL S3PDBConnection::QueryBySql(LPCTSTR lpszSql)
  32. {
  33. BOOL bRet = FALSE;
  34. m_pRes = NULL;
  35. if ( ( NULL != lpszSql )
  36. && ( NULL != m_info.pCon ) )
  37. {
  38. try
  39. {
  40. Query query = m_info.pCon->query();
  41. query << lpszSql;
  42. m_res = query.store();
  43. m_pRes = ( DWORD )( &m_res );
  44. bRet = TRUE;
  45. }
  46. catch (BadQuery er)
  47. {
  48. cerr << "Error: " << er.error << endl;
  49. bRet = FALSE;
  50. }
  51. catch (BadConversion er)
  52. {
  53. cerr << "Error: Tried to convert "" << er.data << "" to a ""
  54. << er.type_name << ""." << endl;
  55. bRet = FALSE;
  56. }
  57. }
  58. return bRet;
  59. }
  60. #ifdef _DEBUG
  61. FILE * g_pOutFile = NULL;
  62. #endif
  63. BOOL S3PDBConnection::Do( LPCTSTR lpszSql )
  64. {
  65. /*#ifdef _DEBUG 
  66. if (strstr(lpszSql, "Role_Info"))
  67. {
  68. fwrite(lpszSql, 1, strlen(lpszSql), g_pOutFile);
  69. fwrite("n", 1,1, g_pOutFile);
  70. fflush(g_pOutFile);
  71. }
  72. #endif
  73. */
  74. BOOL bRet = FALSE;
  75. m_pRes = NULL;
  76. if ( ( NULL != lpszSql )
  77. && ( NULL != m_info.pCon ) )
  78. {
  79. try
  80. {
  81. m_res2 = m_info.pCon->execute( lpszSql );
  82. m_pRes = ( DWORD )( &m_res2 );
  83. bRet = TRUE;
  84. }
  85. catch (BadQuery er)
  86. {
  87. cerr << "Error: " << er.error << endl;
  88. bRet = FALSE;
  89. }
  90. catch (BadConversion er)
  91. {
  92. cerr << "Error: Tried to convert "" << er.data << "" to a ""
  93. << er.type_name << ""." << endl;
  94. bRet = FALSE;
  95. }
  96. }
  97. return bRet;
  98. }
  99. void S3PDBConnection::Init()
  100. {
  101. m_info.dwConID = def_ERRORCONID;
  102. m_info.iDBIdentifier = -1;
  103. m_info.pCon = NULL;
  104. }
  105. BOOL S3PDBConnection::Connect(int iDBIdentifier)
  106. {
  107. BOOL bRet = FALSE;
  108. if ( NULL == m_info.pCon )
  109. {
  110. _CONNECTION_ID con_ID =
  111. S3PDBConnectionPool::Instance()->ApplyDBConnection( iDBIdentifier );
  112. if ( ( def_ERRORCONID != con_ID.dwID )
  113. && ( NULL != con_ID.pCon ) )
  114. {
  115. m_info.dwConID = con_ID.dwID;
  116. m_info.pCon = con_ID.pCon;
  117. m_info.iDBIdentifier = iDBIdentifier;
  118. bRet = TRUE;
  119. }
  120. }
  121. return bRet;
  122. }
  123. std::string S3PDBConnection::GetDate()
  124. {
  125. std::string strRet("");
  126. std::string strDateTime = GetDateTime();
  127. if ( "" != strDateTime )
  128. {
  129. const char cSpace = 0x20;
  130. std::string::size_type index = strDateTime.find( cSpace );
  131. if ( std::string::npos != index )
  132. {
  133. strRet = strDateTime.substr( 0, index );
  134. }
  135. }
  136. return strRet;
  137. }
  138. std::string S3PDBConnection::GetDateTime()
  139. {
  140. std::string strRet("");
  141. if ( NULL != m_info.pCon )
  142. {
  143. try
  144. {
  145. Query query = m_info.pCon->query();
  146. query << "Select NOW()";
  147. Result res = query.store();
  148. if ( res.empty() )
  149. {
  150. throw BadQuery("Failed to get time.");
  151. }
  152. Row row = res[0];
  153. strRet = row[0];
  154. }
  155. catch ( BadQuery er )
  156. cerr << "Error: " << er.error << endl;
  157. }
  158. catch ( BadConversion er )
  159. cerr << "Error: Tried to convert "" << er.data << "" to a "" 
  160. << er.type_name << ""." << endl;
  161. }
  162. }
  163. return strRet;
  164. }