SQLGetDiagRecSimpleTest.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.  /**
  14.  * @file SQLGetDiagRecSimpleTest.cpp
  15.  */
  16. #include <common.hpp>
  17. #include <string.h>
  18. using namespace std;
  19. SQLHDBC     GDS_hdbc;
  20. SQLHSTMT    GDS_hstmt;
  21. SQLHENV     GDS_henv;
  22. SQLHDESC    GDS_hdesc;
  23. SQLRETURN   GDS_retcode, GDS_RETURN;
  24. #define GDS_SQL_MAXIMUM_MESSAGE_LENGTH 255
  25. SQLCHAR GDS_Sqlstate[5];
  26. SQLINTEGER    GDS_NativeError;
  27. SQLSMALLINT   GDS_i = 1, GDS_MsgLen;
  28. SQLCHAR   GDS_Msg[GDS_SQL_MAXIMUM_MESSAGE_LENGTH], GDS_ConnectIn[30];
  29. /** 
  30.  * Test SQLGetDiagRec return value
  31.  *
  32.  * -#Simply test Msg when return is SQL_NO_DATA
  33.  * -#Simply test Msg when return is SQL_SUCCESS
  34.  * -#Simply test Msg when return is SQL_SUCCESS_WITH_INFO
  35.  * -#Simply test Msg when return is SQL_INVALID_HANDLE
  36.  * -#Simply test Msg when return is SQL_ERROR
  37.  *
  38.  * @return Zero, if test succeeded
  39.  */
  40.        
  41. int SQLGetDiagRecSimpleTest()
  42. {
  43.      ndbout << endl << "Start SQLGetDiagRec Simple Testing" << endl;
  44.   //************************************
  45.   //** Allocate An Environment Handle **
  46.   //************************************
  47.      GDS_retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &GDS_henv);
  48.      if (GDS_retcode == SQL_SUCCESS || GDS_retcode == SQL_SUCCESS_WITH_INFO)
  49.          ndbout << "Allocated An Environment Handle!" << endl;
  50.   //*********************************************
  51.   //** Set the ODBC application Version to 3.x **
  52.   //*********************************************
  53.      GDS_retcode = SQLSetEnvAttr(GDS_henv, 
  54.  SQL_ATTR_ODBC_VERSION, 
  55.  (SQLPOINTER) SQL_OV_ODBC3, 
  56.  SQL_IS_UINTEGER);
  57.      if (GDS_retcode == SQL_SUCCESS || GDS_retcode == SQL_SUCCESS_WITH_INFO)
  58.      ndbout << "Set the ODBC application Version to 3.x!" << endl;
  59.   //**********************************
  60.   //** Allocate A Connection Handle **
  61.   //**********************************
  62.      GDS_retcode = SQLAllocHandle(SQL_HANDLE_DBC, GDS_henv, &GDS_hdbc);
  63.      if (GDS_retcode == SQL_SUCCESS || GDS_retcode == SQL_SUCCESS_WITH_INFO)
  64.          ndbout << "Allocated A Connection Handle!" << endl;
  65.   // *******************
  66.   // ** Connect to DB **
  67.   // *******************
  68.     GDS_retcode = SQLConnect(GDS_hdbc, 
  69.     (SQLCHAR *) connectString(),
  70.     SQL_NTS, 
  71.     (SQLCHAR *) "", 
  72.     SQL_NTS, 
  73.     (SQLCHAR *) "", 
  74.     SQL_NTS);
  75.      if (GDS_retcode == SQL_SUCCESS || GDS_retcode == SQL_SUCCESS_WITH_INFO){
  76.        ndbout << "Success connection to DB!" << endl;
  77.        ndbout << "GDS_retcode = " << GDS_retcode << endl; 
  78.        ndbout << "SQL_SUCCESS = " << SQL_SUCCESS << endl;
  79.        ndbout << "SQL_SUCCESS_WITH_INFO = " << SQL_SUCCESS_WITH_INFO << endl;}
  80.        ndbout << endl;
  81.      ndbout << "-------------------------------------------------" << endl;
  82.      ndbout << "Error diagnostics:" << endl;
  83.      if (GDS_retcode != SQL_SUCCESS || GDS_retcode != SQL_SUCCESS_WITH_INFO){
  84.        ndbout << "GDS_retcode = " << GDS_retcode << endl;
  85.        ndbout << "SQL_SUCCESS = " << SQL_SUCCESS << endl;
  86.        ndbout << "SQL_SUCCESS_WITH_INFO = " << SQL_SUCCESS_WITH_INFO << endl;
  87.      GDS_RETURN = SQLGetDiagRec(SQL_HANDLE_DBC, 
  88. GDS_hdbc, 
  89. GDS_i, 
  90. GDS_Sqlstate, 
  91. &GDS_NativeError, 
  92. GDS_Msg, 
  93. sizeof(GDS_Msg), 
  94. &GDS_MsgLen);
  95.      if (GDS_RETURN == SQL_NO_DATA){
  96.        ndbout << "GDS_SQLSTATES = SQL_NO_DATA" << endl;
  97.        ndbout << "the HandleType is:" << SQL_HANDLE_DBC << endl;
  98.        ndbout << "the Handle is :" << (long)GDS_hdbc << endl;
  99.        ndbout << "the GDS_Msg is :" << (char *)GDS_Msg << endl;
  100.        ndbout << "the sqlstate is:" << (char *)GDS_Sqlstate << endl;}
  101.      else if (GDS_RETURN == SQL_SUCCESS){
  102.        ndbout << "GDS_SQLSTATES = SQL_SUCCESS" << endl;
  103.        ndbout << "the HandleType is:" << SQL_HANDLE_DBC << endl;
  104.        ndbout << "the Handle is :" << (long)GDS_hdbc << endl;
  105.        ndbout << "the GDS_Msg is :" << (char *)GDS_Msg << endl;
  106.        ndbout << "the sqlstate is:" << (char *)GDS_Sqlstate << endl;}
  107.      else if (GDS_RETURN == SQL_SUCCESS_WITH_INFO){
  108.        ndbout << "GDS_SQLSTATES = SQL_SUCCESS_WITH_INFO" << endl;
  109.        ndbout << "the HandleType is:" << SQL_HANDLE_DBC << endl;
  110.        ndbout << "the Handle is :" << (long)GDS_hdbc << endl;
  111.        ndbout << "the GDS_Msg is :" << (char *)GDS_Msg << endl;
  112.        ndbout << "the sqlstate is:" << (char *)GDS_Sqlstate << endl;}
  113.      else if (GDS_RETURN == SQL_INVALID_HANDLE){
  114.        ndbout << "GDS_SQLSTATES = SQL_INVALID_HANDLE" << endl;
  115.        ndbout << "the HandleType is:" << SQL_HANDLE_DBC << endl;
  116.        ndbout << "the Handle is :" << (long)GDS_hdbc << endl;
  117.        ndbout << "the GDS_Msg is :" << (char *)GDS_Msg << endl;
  118.        ndbout << "the sqlstate is:" << (char *)GDS_Sqlstate << endl;}
  119.      else{
  120.        ndbout << "GDS_RETURN = SQL_ERROR" << endl;
  121.        ndbout << "the HandleType is:" << SQL_HANDLE_DBC << endl;
  122.        ndbout << "the Handle is :" << (long)GDS_hdbc << endl;
  123.        ndbout << "the GDS_Msg is :" << (char *)GDS_Msg << endl;
  124.        ndbout << "the sqlstate is:" << (char *)GDS_Sqlstate << endl; 
  125.      }
  126.                                                                             }
  127.   ndbout << "-------------------------------------------------" << endl;
  128.   //******************
  129.   //** Free Handles **
  130.   //******************
  131.   SQLDisconnect(GDS_hdbc);
  132.   SQLFreeHandle(SQL_HANDLE_STMT, GDS_hstmt);
  133.   SQLFreeHandle(SQL_HANDLE_DBC, GDS_hdbc);
  134.   SQLFreeHandle(SQL_HANDLE_ENV, GDS_henv);
  135.   return NDBT_OK;
  136.  }