TNewADO.cpp
上传用户:haiweijt
上传日期:2018-02-23
资源大小:8195k
文件大小:2k
源码类别:

Telnet服务器

开发平台:

Visual C++

  1. #include "TNewADO.h"
  2. #include <stdio.h>
  3. TNewADO::TNewADO(void)
  4. {
  5. m_pConnection = NULL;
  6. m_IsConnect = FALSE;
  7. }
  8. TNewADO::~TNewADO(void)
  9. {
  10. }
  11. BOOL TNewADO::Open(const char* IP, const char* User, const char* PWD, const char* DB)
  12. {
  13. strcpy(m_IP, IP);
  14. strcpy(m_User, User);
  15. strcpy(m_PWD, PWD);
  16. strcpy(m_DB, DB);
  17. return TRUE;
  18. }
  19. void TNewADO::Close()
  20. {
  21. }
  22. BOOL TNewADO::Connect()
  23. {
  24. ::CoInitialize(NULL); 
  25. char strConn[256];
  26. sprintf(strConn, "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=%s;Password=%s;Data Source=%s;Initial Catalog=%s",
  27. m_User, m_PWD, m_IP, m_DB);
  28. HRESULT hRes = m_pConnection.CreateInstance(__uuidof(Connection));
  29. if(m_pConnection == NULL)
  30. {
  31. m_IsConnect = FALSE;
  32. return FALSE;
  33. }
  34. try                 
  35. {
  36. m_pConnection->Open ( strConn , "" , "" , adModeUnknown );
  37. m_IsConnect = TRUE;
  38. return TRUE;
  39. }
  40. catch ( _com_error &e )
  41. {
  42. m_IsConnect = FALSE;
  43. return FALSE;
  44. }
  45. }
  46. void TNewADO::Disconnect()
  47. {
  48. if ( m_pConnection != NULL)
  49. {
  50. if ( m_pConnection->State & adStateOpen)
  51. {
  52. m_pConnection->Close ( );
  53. // m_pConnection.Release ( );
  54. }
  55. m_pConnection = NULL;
  56. }
  57. ::CoUninitialize();
  58. m_IsConnect = FALSE;
  59. }
  60. int TNewADO::Execute(const char *SQL)
  61. {
  62. if (SQL == NULL)
  63. return 3;
  64. if (m_pConnection == NULL)
  65. {
  66. if (!Connect())
  67. return 2;
  68. }
  69. if ( m_pConnection )
  70. {
  71. try
  72. {
  73. DWORD tt = GetTickCount();
  74. _CommandPtr pCommand;
  75. pCommand.CreateInstance(__uuidof(Command));
  76. pCommand->ActiveConnection = m_pConnection; // 将库连接赋于它
  77. pCommand->CommandText = SQL; // SQL语句
  78. pCommand->Execute(NULL, NULL,adCmdText); 
  79. //m_pConnection->CursorLocation = adUseClient;
  80. //m_pConnection->Execute ( SQL , NULL , adExecuteNoRecords );
  81. //char buf[256];
  82. //memcpy(buf, SQL, 128);
  83. //buf[128] = '';
  84. //LogInfo3("execute time = %d, %s",GetTickCount() - tt, buf);
  85. return 0;
  86. }
  87. catch( _com_error &e )
  88. {
  89. switch(e.Error())
  90. {
  91. case  -2147217900:
  92. case  -2147217865:
  93. return 1;
  94. case  -2147467259:
  95. Disconnect();
  96. return 2;
  97. default:
  98. Disconnect();
  99. return 1;
  100. }
  101. }
  102. }
  103. else
  104. {
  105. return 2;
  106. }
  107. }