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

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.  /**
  14.  * @file SQLExecuteTest.cpp
  15.  */
  16. #include <common.hpp>
  17. #define ESQL_MAXIMUM_MESSAGE_LENGTH 200
  18. using namespace std;
  19. SQLHDBC     Ehdbc;
  20. SQLHSTMT    Ehstmt;
  21. SQLHENV     Ehenv;
  22. SQLHDESC    Ehdesc;
  23.        
  24. void Execute_DisplayError(SQLSMALLINT EHandleType, 
  25.   SQLHSTMT EInputHandle);
  26. /** 
  27.  * Test to execute a SQL statement in a data result set
  28.  *
  29.  * Tests:
  30.  * -# Test1 There is no executed statement 
  31.  * @return Zero, if test succeeded
  32.  */
  33. int SQLExecuteTest()
  34. {
  35.   SQLRETURN   retcode;
  36.   /* hstmt */
  37.   retcode = SQLExecute(Ehstmt);
  38.   if (retcode == SQL_INVALID_HANDLE)
  39.     ndbout << "Handle Type is SQL_HANDLE_STMT, but SQL_INVALID_HANDLE" << endl;
  40.     ndbout << "still appeared. Please check programm" << endl;
  41.   if (retcode == SQL_ERROR || retcode == SQL_SUCCESS_WITH_INFO)
  42.   Execute_DisplayError(SQL_HANDLE_STMT, Ehstmt);
  43.   /* henv */
  44.   retcode = SQLExecute(Ehenv);
  45.   if (retcode == SQL_SUCCESS_WITH_INFO || retcode == SQL_SUCCESS)
  46.     ndbout << "Handle Type is SQL_HANDLE_ENV, but SQL_SUCCESS_WITH_INFO" 
  47.    << "still appeared. Please check programm" << endl;
  48.   //  Execute_DisplayError(SQL_HANDLE_ENV, Ehenv);
  49.   /* hdbc */
  50.   retcode = SQLExecute(Ehdbc);
  51.   if (retcode == SQL_SUCCESS_WITH_INFO || retcode == SQL_SUCCESS)
  52.     ndbout << "Handle Type is SQL_HANDLE_DBC, but SQL_SUCCESS_WITH_INFO" 
  53.    <<"still appeared. Please check programm" << endl;
  54.   //  Execute_DisplayError(SQL_HANDLE_DBC, Ehdbc);
  55.   /* hdesc */
  56.   retcode = SQLExecute(Ehdesc);
  57.   if (retcode == SQL_SUCCESS_WITH_INFO || retcode == SQL_SUCCESS)
  58.     ndbout << "Handle Type is SQL_HANDLE_DESC, but SQL_SUCCESS_WITH_INFO" 
  59.    << "still appeared. Please check programm" << endl;
  60.   //  Execute_DisplayError(SQL_HANDLE_DESC, Ehdesc);
  61.   return NDBT_OK;
  62.  }
  63. void Execute_DisplayError(SQLSMALLINT EHandleType, 
  64.   SQLHSTMT EInputHandle)
  65. {
  66.   SQLCHAR Sqlstate[5];
  67.   SQLINTEGER    NativeError;
  68.   SQLSMALLINT   i, MsgLen;
  69.   SQLCHAR   Msg[ESQL_MAXIMUM_MESSAGE_LENGTH];
  70.   SQLRETURN   SQLSTATEs;
  71.   i = 1;
  72.   ndbout << "-------------------------------------------------" << endl;
  73.   ndbout << "Error diagnostics:" << endl;
  74.  
  75.   while ((SQLSTATEs = SQLGetDiagRec(EHandleType, 
  76.     EInputHandle, 
  77.     i, 
  78.     Sqlstate, 
  79.     &NativeError, 
  80.     Msg, 
  81.     sizeof(Msg), 
  82.     &MsgLen)) 
  83.  != SQL_NO_DATA)
  84.     {
  85.    
  86.       ndbout << "the HandleType is:" << EHandleType << endl;
  87.       ndbout << "the InputHandle is :" << EInputHandle << endl;
  88.       ndbout << "the Msg is :" << (char *)Msg << endl;
  89.       ndbout << "the output state is:" << (char *)Sqlstate << endl; 
  90.       
  91.       i ++;     
  92.       break;
  93.     }
  94.   ndbout << "-------------------------------------------------" << endl;  
  95. }