SQLColAttributeTest2.cpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:9k
源码类别:
MySQL数据库
开发平台:
Visual C++
- /* 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 SQLColAttributeTest2.cpp
- */
- #include <common.hpp>
- using namespace std;
- #define MAXIMUM_MESSAGE_LENGTH_Test2 200
- #define BufferLengthTest2 156
- SQLHSTMT ColAtt_hstmtTest2;
- SQLHSTMT ColAtt_hdbcTest2;
- SQLHENV ColAtt_henvTest2;
- SQLHDESC ColAtt_hdescTest2;
- SQLCHAR CharacterAttributePtrTest2;
- SQLINTEGER NumericAttributePtrTest2;
- SQLSMALLINT StringLengthPtrTest2;
- SQLRETURN ColAtt_retTest2;
- void ColAtt_DisplayErrorTest2(SQLSMALLINT ColAttTest2_HandleType,
- SQLHSTMT ColAttTest2_InputHandle);
- /**
- * Test returning descriptor information
- *
- * Test:
- * -# Call SQLColAttribute without preceeding SQLExecute
- * -# Let TYPE is 'ITEM' in Table 20, FieldIdentifer is zero
- * -# Let TYPE is 'ITEM' in Table 20, ColumnNumber is less than one
- * -# FieldIdentifer is not one of the code valuess in Table 20
- * -# Let TYPE is 'ITEM' in Table 20, ColumnNumber is greater than 1044
- *
- * @return Zero, if test succeeded
- */
- int SQLColAttributeTest2()
- {
- ndbout << endl << "Start SQLColAttribute Testing2" << endl;
- SQLCHAR SQLStmt [120];
- //*******************************************************************
- //** Test **
- //** **
- //** hstmt **
- //** Prepare a statement without executing the statement **
- //** **
- //** Intended result: table Customer should not have new row **
- //*******************************************************************
- //************************************
- //** Allocate An Environment Handle **
- //************************************
- ColAtt_retTest2 = SQLAllocHandle(SQL_HANDLE_ENV,
- SQL_NULL_HANDLE,
- &ColAtt_henvTest2);
- if (ColAtt_retTest2 == SQL_SUCCESS || ColAtt_retTest2 == SQL_SUCCESS_WITH_INFO)
- ndbout << "Allocated an environment Handle!" << endl;
- //*********************************************
- //** Set the ODBC application Version to 3.x **
- //*********************************************
- ColAtt_retTest2 = SQLSetEnvAttr(ColAtt_henvTest2,
- SQL_ATTR_ODBC_VERSION,
- (SQLPOINTER) SQL_OV_ODBC3,
- SQL_IS_UINTEGER);
- if (ColAtt_retTest2 == SQL_SUCCESS || ColAtt_retTest2 == SQL_SUCCESS_WITH_INFO)
- ndbout << "Set the ODBC application Version to 2.x!" << endl;
- //**********************************
- //** Allocate A Connection Handle **
- //**********************************
- ColAtt_retTest2 = SQLAllocHandle(SQL_HANDLE_DBC,
- ColAtt_henvTest2,
- &ColAtt_hdbcTest2);
- if (ColAtt_retTest2 == SQL_SUCCESS || ColAtt_retTest2 == SQL_SUCCESS_WITH_INFO)
- ndbout << "Allocated a connection Handle!" << endl;
- // *******************
- // ** Connect to DB **
- // *******************
- ColAtt_retTest2 = SQLConnect(ColAtt_hdbcTest2,
- (SQLCHAR *) connectString(),
- SQL_NTS,
- (SQLCHAR *) "",
- SQL_NTS,
- (SQLCHAR *) "",
- SQL_NTS);
- if (ColAtt_retTest2 == SQL_SUCCESS || ColAtt_retTest2 == SQL_SUCCESS_WITH_INFO)
- ndbout << "Connected to DB : OK!" << endl;
- else
- {
- ndbout << "Failure to Connect DB!" << endl;
- return NDBT_FAILED;
- }
- //*******************************
- //** Allocate statement handle **
- //*******************************
- ColAtt_retTest2 = SQLAllocHandle(SQL_HANDLE_STMT,
- ColAtt_hdbcTest2,
- &ColAtt_hstmtTest2);
- if(ColAtt_retTest2 == SQL_SUCCESS || ColAtt_retTest2 == SQL_SUCCESS_WITH_INFO)
- ndbout << "Allocated a statement handle!" << endl;
- //************************
- //** Define a statement **
- //************************
- /*
- strcpy((char *) SQLStmt,
- "DELETE FROM Customers WHERE CustID = 6");
- */
- strcpy((char *) SQLStmt,
- "INSERT INTO Customers (CustID, Name, Address, Phone) VALUES (6, 'Jan', 'LM vag 8', '969696')");
- /*
- strcpy((char *) SQLStmt,
- "INSERT INTO Customers (CustID, Name, Address, Phone) VALUES (?, ?, ?, ?)");
- */
- //********************************
- //** Prepare SQL statement **
- //********************************
- ColAtt_retTest2 = SQLPrepare(ColAtt_hstmtTest2,
- SQLStmt,
- SQL_NTS);
- if (ColAtt_retTest2 == SQL_SUCCESS || ColAtt_retTest2 == SQL_SUCCESS_WITH_INFO)
- {
- //**************************************************************
- //** FieldIdentifer is not one of the code valuess in Table 20,
- //** "Codes used for descriptor fields"
- //**************************************************************
- ColAtt_retTest2 = SQLColAttribute(ColAtt_hstmtTest2,
- 2,
- 9999,
- &CharacterAttributePtrTest2,
- BufferLengthTest2,
- &StringLengthPtrTest2,
- &NumericAttributePtrTest2);
- if (ColAtt_retTest2 == SQL_ERROR || ColAtt_retTest2 == SQL_SUCCESS_WITH_INFO)
- {
- ndbout << endl << "FieldIdentifer is not one of the" << endl;
- ndbout << "code valuess in Table 20, Codes used for" << endl;
- ndbout << "descriptor fields" <<endl;
- ColAtt_DisplayErrorTest2(SQL_HANDLE_STMT, ColAtt_hstmtTest2);
- }
- //****************************************************************
- //** Let TYPE is 'ITEM' in Table 20, ColumnNumber is less than one
- //****************************************************************
- ColAtt_retTest2 = SQLColAttribute(ColAtt_hstmtTest2,
- -1,
- SQL_DESC_BASE_COLUMN_NAME,
- &CharacterAttributePtrTest2,
- BufferLengthTest2,
- &StringLengthPtrTest2,
- &NumericAttributePtrTest2);
- if (ColAtt_retTest2 == SQL_ERROR || ColAtt_retTest2 == SQL_SUCCESS_WITH_INFO)
- {
- ndbout << "Let TYPE is 'ITEM' in Table 20,ColumnNumber"
- << "is less than one" << endl;
- ColAtt_DisplayErrorTest2(SQL_HANDLE_STMT, ColAtt_hstmtTest2);
- }
- //*********************************************************
- //** Let TYPE is 'ITEM' in Table 20, FieldIdentifer is zero
- //*********************************************************
- ColAtt_retTest2 = SQLColAttribute(ColAtt_hstmtTest2,
- 1018,
- 0,
- &CharacterAttributePtrTest2,
- BufferLengthTest2,
- &StringLengthPtrTest2,
- &NumericAttributePtrTest2);
- if (ColAtt_retTest2 == SQL_ERROR || ColAtt_retTest2 == SQL_SUCCESS_WITH_INFO)
- {
- ndbout << "Let TYPE is 'ITEM' in Table 20, FieldIdentifer"
- << " is zero" <<endl;
- ColAtt_DisplayErrorTest2(SQL_HANDLE_STMT, ColAtt_hstmtTest2);
- }
- //**********************************************************
- //** Let TYPE is 'ITEM' in Table 20, ColumnNumber is greater
- //** than TOP_LEVEL_COUNT(1044)
- //*********************************************************
- ColAtt_retTest2 = SQLColAttribute(ColAtt_hstmtTest2,
- 1045,
- SQL_DESC_BASE_COLUMN_NAME,
- &CharacterAttributePtrTest2,
- BufferLengthTest2,
- &StringLengthPtrTest2,
- &NumericAttributePtrTest2);
- if (ColAtt_retTest2 == SQL_ERROR || ColAtt_retTest2 == SQL_SUCCESS_WITH_INFO)
- {
- ndbout << "Let TYPE is 'ITEM' in Table 20, ColumnNumber" << endl
- << "is greater than TOP_LEVEL_COUNT(1044)" << endl;
- ColAtt_DisplayErrorTest2(SQL_HANDLE_STMT, ColAtt_hstmtTest2);
- }
- }
- // *********************************
- // ** Disconnect and Free Handles **
- // *********************************
- SQLDisconnect(ColAtt_hdbcTest2);
- SQLFreeHandle(SQL_HANDLE_STMT, ColAtt_hstmtTest2);
- SQLFreeHandle(SQL_HANDLE_DBC, ColAtt_hdbcTest2);
- SQLFreeHandle(SQL_HANDLE_ENV, ColAtt_henvTest2);
- return NDBT_OK;
- }
- void ColAtt_DisplayErrorTest2(SQLSMALLINT ColAttTest2_HandleType,
- SQLHSTMT ColAttTest2_InputHandle)
- {
- SQLSMALLINT ColAtt_i = 1;
- SQLRETURN ColAtt_SQLSTATEs;
- SQLCHAR ColAtt_Sqlstate[5];
- SQLCHAR ColAtt_Msg[MAXIMUM_MESSAGE_LENGTH_Test2];
- SQLSMALLINT ColAtt_MsgLen;
- SQLINTEGER ColAtt_NativeError;
- ndbout << "-------------------------------------------------" << endl;
- ndbout << "Error diagnostics:" << endl;
- while ((ColAtt_SQLSTATEs = SQLGetDiagRec(ColAttTest2_HandleType,
- ColAttTest2_InputHandle,
- ColAtt_i,
- ColAtt_Sqlstate,
- &ColAtt_NativeError,
- ColAtt_Msg,
- sizeof(ColAtt_Msg),
- &ColAtt_MsgLen))
- != SQL_NO_DATA)
- {
- ndbout << "the HandleType is:" << ColAttTest2_HandleType << endl;
- ndbout << "the InputHandle is :" << (long)ColAttTest2_InputHandle << endl;
- ndbout << "the ColAtt_Msg is: " << (char *) ColAtt_Msg << endl;
- ndbout << "the output state is:" << (char *)ColAtt_Sqlstate << endl;
- ColAtt_i ++;
- break;
- }
- ndbout << "-------------------------------------------------" << endl;
- }