sqlgettypeinfotest.cpp
来自「MySQL数据库开发源码 值得一看哦」· C++ 代码 · 共 203 行
CPP
203 行
/* Copyright (C) 2003 MySQL AB This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /** * @file SQLGetTypeInfoTest.cpp */#include <common.hpp>#define GT_MESSAGE_LENGTH 200using namespace std;SQLHDBC GT_hdbc;SQLHSTMT GT_hstmt;SQLHENV GT_henv; void SQLGetTypeInfoTest_DisplayError(SQLSMALLINT GT_HandleType, SQLHDBC GT_InputHandle);/** * Test to retrieve general information about the data types * supported by the data source an application is currently connected to. * * Tests: * -# Test The value of FunctionId is not in table 37 * @return Zero, if test succeeded */int SQLGetTypeInfoTest(){ SQLRETURN retcode; SQLSMALLINT ColumnSize; unsigned long TypeName; // SQLCHAR TypeName[128]; ndbout << endl << "Start SQLGetTypeInfo Testing" << endl; //************************************ //** Allocate An Environment Handle ** //************************************ retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, >_henv); if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) ndbout << "Allocated an environment Handle!" << endl; //********************************************* //** Set the ODBC application Version to 3.x ** //********************************************* retcode = SQLSetEnvAttr(GT_henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3, SQL_IS_UINTEGER); if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) ndbout << "Set the ODBC application Version to 3.X!" << endl; //********************************** //** Allocate A Connection Handle ** //********************************** retcode = SQLAllocHandle(SQL_HANDLE_DBC, GT_henv, >_hdbc); if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) ndbout << "Allocated a connection Handle!" << endl; // ******************* // ** Connect to DB ** // ******************* retcode = SQLConnect(GT_hdbc, (SQLCHAR *) connectString(), SQL_NTS, (SQLCHAR *) "", SQL_NTS, (SQLCHAR *) "", SQL_NTS); //******************************* //** Allocate statement handle ** //******************************* retcode = SQLAllocHandle(SQL_HANDLE_STMT, GT_hdbc, >_hstmt); //*********************************************** //** Get DataType From the Current Application ** //*********************************************** retcode = SQLGetTypeInfo(GT_hstmt, SQL_CHAR); ndbout << "retcode =SQLGetTypeInfo()= " << retcode << endl; if (retcode == SQL_SUCCESS) { retcode =SQLBindCol(GT_hstmt, 2, SQL_C_ULONG, TypeName, sizeof(TypeName), NULL); ndbout << "retcode = SQLBindCol()= " << retcode << endl; // retcode =SQLBindCol(GT_hstmt, // 1, // SQL_C_DEFAULT, // ColumnSize, // sizeof(ColumnSize), // NULL); retcode = SQLFetch(GT_hstmt); ndbout << "retcode = SQLFETCH()=" << retcode << endl; ndbout << "DataType = " << TypeName << endl; } //******************************************************* //** If the Value of DataType is not in Table 37, then ** //** an exception condition is raised ** //******************************************************* retcode = SQLGetTypeInfo(GT_hstmt, 8888888); if (retcode == -2) { ndbout << "retcode = " << retcode << endl; ndbout << "The value of DataType is not in table 37" << endl; SQLGetTypeInfoTest_DisplayError(SQL_HANDLE_STMT, GT_hstmt); } else if (retcode == SQL_ERROR || retcode == SQL_SUCCESS_WITH_INFO) { ndbout << "retcode = " << retcode << endl; ndbout << endl << "The value of DataType is not in Table 37" << endl; SQLGetTypeInfoTest_DisplayError(SQL_HANDLE_STMT, GT_hstmt); } else { ndbout << "retcode = " << retcode << endl; ndbout << endl << "The value of DataType is not in Table 37" << endl; SQLGetTypeInfoTest_DisplayError(SQL_HANDLE_STMT, GT_hstmt); } // ********************************* // ** Disconnect and Free Handles ** // ********************************* SQLDisconnect(GT_hdbc); SQLFreeHandle(SQL_HANDLE_STMT, GT_hstmt); SQLFreeHandle(SQL_HANDLE_DBC, GT_hdbc); SQLFreeHandle(SQL_HANDLE_ENV, GT_henv); return NDBT_OK; }void SQLGetTypeInfoTest_DisplayError(SQLSMALLINT GT_HandleType, SQLHDBC GT_InputHandle){ SQLINTEGER NativeError; SQLSMALLINT i, MsgLen; SQLCHAR Msg[GT_MESSAGE_LENGTH]; SQLRETURN SQLSTATEs; SQLCHAR Sqlstate[50]; i = 1; ndbout << "-------------------------------------------------" << endl; ndbout << "Error diagnostics:" << endl; while ((SQLSTATEs = SQLGetDiagRec(GT_HandleType, GT_InputHandle, i, Sqlstate, &NativeError, Msg, sizeof(Msg), &MsgLen)) != SQL_NO_DATA) { ndbout << "the HandleType is:" << GT_HandleType << endl; ndbout << "the InputHandle is :" << (long)GT_InputHandle << endl; ndbout << "the Msg is :" << (char *) Msg << endl; ndbout << "the output state is:" << (char *)Sqlstate << endl; i ++; break; } ndbout << "-------------------------------------------------" << endl;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?