SQLFreeStmtTest.cpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:6k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #include <common.h>
  14. #define SQL_MAXIMUM_MESSAGE_LENGTH 200
  15. using namespace std;
  16. SQLHDBC     hdbc;
  17. SQLHSTMT    hstmt;
  18. SQLHENV     henv;
  19. SQLHDESC    hdesc;
  20. SQLRETURN   retcode, SQLSTATEs;
  21. int strange_handle;
  22. SQLCHAR Sqlstate[5];
  23. SQLINTEGER    NativeError;
  24. SQLSMALLINT   i, MsgLen;
  25. struct handle_set
  26. {
  27. SQLHDBC     hdbc_varible;
  28. SQLHSTMT    hstmt_varible;
  29. SQLHENV     henv_varible;
  30. SQLHDESC    hdesc_varible;
  31. int         strangehandle;
  32. };
  33. handle_set handlevalue;
  34. void handle_deal_with_HSTMT(SQLSMALLINT HandleType, SQLHSTMT InputHandle);
  35. void handle_deal_with_HENV(SQLSMALLINT HandleType, SQLHENV InputHandle);
  36. void handle_deal_with_HDESC(SQLSMALLINT HandleType, SQLHDESC InputHandle);
  37. void handle_deal_with_HDBC(SQLSMALLINT HandleType, SQLHDBC InputHandle);
  38.         
  39. void DisplayError_HDBC(SQLCHAR Sqlstate[6], SQLSMALLINT HandleType, SQLHDBC InputHandle);
  40. void DisplayError_HSTMT(SQLCHAR Sqlstate[6], SQLSMALLINT HandleType, SQLHSTMT InputHandle);
  41. void DisplayError_HENV(SQLCHAR Sqlstate[6], SQLSMALLINT HandleType, SQLHENV InputHandle);
  42. void DisplayError_HDESC(SQLCHAR Sqlstate[6], SQLSMALLINT HandleType, SQLHDESC InputHandle);
  43. int SQLFreeStmtTest ()
  44. {
  45.  
  46. handlevalue.hdbc_varible = hdbc;
  47. handlevalue.hstmt_varible = hstmt;
  48. handlevalue.henv_varible = henv;
  49. handlevalue.hdesc_varible = hdesc;
  50. handlevalue.strangehandle = 67;
  51. /* ENV */ 
  52. handle_deal_with_HENV(SQL_HANDLE_ENV, SQL_NULL_HANDLE);
  53.         
  54. /* DBC */
  55. handle_deal_with_HDBC(SQL_HANDLE_DBC, SQL_NULL_HANDLE);
  56.          
  57. /* STMT */
  58. handle_deal_with_HSTMT(SQL_HANDLE_STMT, SQL_NULL_HANDLE);
  59. /* DESC */
  60. handle_deal_with_HDESC(SQL_HANDLE_DESC, SQL_NULL_HANDLE);
  61.         
  62. return 0;
  63. }        
  64. void handle_deal_with_HDBC(SQLSMALLINT HandleType, SQLHDBC InputHandle) 
  65. {
  66.      SQLCHAR     Msg[SQL_MAXIMUM_MESSAGE_LENGTH];
  67.      retcode = SQLFreeHandle(HandleType, InputHandle);
  68.      if (retcode == SQL_ERROR || retcode == SQL_SUCCESS_WITH_INFO) {
  69.      i = 1;
  70.      while ((SQLSTATEs = SQLGetDiagRec(HandleType, InputHandle, i, 
  71.              Sqlstate, &NativeError, Msg, sizeof(Msg), 
  72.              &MsgLen)) != SQL_NO_DATA)                   {
  73.      DisplayError_HDBC(Sqlstate, HandleType, InputHandle);
  74.      i ++;
  75.                                                          }
  76.                                                                    }
  77.  }
  78. void handle_deal_with_HSTMT(SQLSMALLINT HandleType, SQLHSTMT InputHandle) 
  79. {
  80.      SQLCHAR     Msg[SQL_MAXIMUM_MESSAGE_LENGTH];
  81.      retcode = SQLFreeHandle(HandleType, InputHandle);
  82.      if (retcode == SQL_ERROR || retcode == SQL_SUCCESS_WITH_INFO) {
  83.      i = 1;
  84.      while ((SQLSTATEs = SQLGetDiagRec(HandleType, InputHandle, i, 
  85.              Sqlstate, &NativeError, Msg, sizeof(Msg), 
  86.              &MsgLen)) != SQL_NO_DATA)                   {
  87.      DisplayError_HSTMT(Sqlstate, HandleType, InputHandle);
  88.      i ++;
  89.                                                          }
  90.                                                                    }
  91.  }
  92. void handle_deal_with_HENV(SQLSMALLINT HandleType, SQLHENV InputHandle) 
  93. {
  94.      SQLCHAR     Msg[SQL_MAXIMUM_MESSAGE_LENGTH];
  95.      retcode = SQLFreeHandle(HandleType, InputHandle);
  96.      if (retcode == SQL_ERROR || retcode == SQL_SUCCESS_WITH_INFO) {
  97.      i = 1;
  98.      while ((SQLSTATEs = SQLGetDiagRec(HandleType, InputHandle, i, 
  99.              Sqlstate, &NativeError, Msg, sizeof(Msg), 
  100.              &MsgLen)) != SQL_NO_DATA)                   {
  101.      DisplayError_HENV(Sqlstate, HandleType, InputHandle);
  102.      i ++;
  103.                                                          }
  104.                                                                    }
  105.  }
  106. void handle_deal_with_HDESC(SQLSMALLINT HandleType, SQLHDESC InputHandle) 
  107. {
  108.      SQLCHAR     Msg[SQL_MAXIMUM_MESSAGE_LENGTH];
  109.      retcode = SQLFreeHandle(HandleType, InputHandle);
  110.      if (retcode == SQL_ERROR || retcode == SQL_SUCCESS_WITH_INFO) {
  111.      i = 1;
  112.      while ((SQLSTATEs = SQLGetDiagRec(HandleType, InputHandle, i, 
  113.              Sqlstate, &NativeError, Msg, sizeof(Msg), 
  114.              &MsgLen)) != SQL_NO_DATA)                   {
  115.      DisplayError_HDESC(Sqlstate, HandleType, InputHandle);
  116.      i ++;
  117.                                                          }
  118.                                                                    }
  119.  }
  120. void DisplayError_HENV(SQLCHAR Sqlstate[6], SQLSMALLINT HandleType, SQLHENV InputHandle)
  121. {
  122.      ndbout << "the HandleType is:" << HandleType << endl;
  123.      ndbout << "the InputHandle is :" << InputHandle << endl;
  124.      ndbout << "the output state is:" << (char *)Sqlstate << endl;  
  125. }
  126. void DisplayError_HDBC(SQLCHAR Sqlstate[6], SQLSMALLINT HandleType, SQLHDBC InputHandle)
  127. {
  128.      ndbout << "the HandleType is:" << HandleType << endl;
  129.      ndbout << "the InputHandle is :" << InputHandle << endl;
  130.      ndbout << "the output state is:" << (char *)Sqlstate << endl;
  131. }
  132. void DisplayError_HSTMT(SQLCHAR Sqlstate[6], SQLSMALLINT HandleType, SQLHSTMT InputHandle)
  133. {
  134.      ndbout << "the HandleType is:" << HandleType << endl;
  135.      ndbout << "the InputHandle is :" << InputHandle << endl;
  136.      ndbout << "the output state is:" << (char *)Sqlstate << endl;
  137. }
  138. void DisplayError_HDESC(SQLCHAR Sqlstate[6], SQLSMALLINT HandleType, SQLHDESC InputHandle)
  139. {
  140.      ndbout << "the HandleType is:" << HandleType << endl;
  141.      ndbout << "the InputHandle is :" << InputHandle << endl;
  142.      ndbout << "the output state is:" << (char *)Sqlstate << endl;
  143. }