#include #include #include #include #include #include #define CHECK_ODBC_RES(exp) rc = exp; if(rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) throw rc #define CHECK_ODBC_RES_OK(exp) rc = exp; if(rc != SQL_SUCCESS) throw rc void main() { SQLRETURN rc; SQLHANDLE henv = NULL; SQLHANDLE hdbc = NULL; SQLHANDLE hstmt = NULL; try { CHECK_ODBC_RES(SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv)); CHECK_ODBC_RES(SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_NTS)); CHECK_ODBC_RES(SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc)); std::cout << "Connecting " << "..." << std::endl; SQLCHAR DSN[] = "351-on-5068"; SQLCHAR UserName[] = "root"; SQLCHAR Password[] = "******"; CHECK_ODBC_RES(SQLConnect(hdbc, DSN, SQL_NTS, UserName, SQL_NTS, Password, SQL_NTS)); CHECK_ODBC_RES(SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt)); CHECK_ODBC_RES(SQLExecDirect(hstmt, (SQLCHAR *)"SELECT 1234567890+2234567890+3234567890+4234567890+5234567890+6234567890+7234567890", SQL_NTS)); SQLSMALLINT pType[100]; char pBuf[50][1000]; SQLINTEGER cbLen[100]; SQLSMALLINT sLength; SQLSMALLINT sType; char pColName[255]; unsigned long lLength; short sScale; short uFlag; CHECK_ODBC_RES(::SQLGetInfo(hdbc, SQL_MAX_COLUMN_NAME_LEN, &sLength, 255,&sType)); std::cout << "GetInfo Col Name Length:" << sLength << "#"; std::cout << "\r\n" << std::endl; CHECK_ODBC_RES(::SQLDescribeCol(hstmt,1,(SQLCHAR*)pColName, 255,&sLength, &sType, &lLength, &sScale,&uFlag )); pType[1] = sType; std::cout << "Col Name:" << pColName << "#"; std::cout << "\r\n" << std::endl; std::cout << "Col Name Length:" << sLength << "#"; std::cout << "\r\n" << std::endl; while ((rc = SQLFetch(hstmt)) == SQL_SUCCESS ) { if(pType[1] ==SQL_TYPE_DATE) { if(cbLen[1] >=0) std::cout << "Col Val:" << pBuf[1]<<'#'; else std::cout << '#'; } std::cout << "\r\n" << std::endl; } } catch(SQLRETURN er) { SQLSMALLINT cberrormsg = 0; SQLINTEGER SqlDbCode = 0; SQLCHAR strDbMessage[100]; SQLCHAR strState[100]; rc = SQLError ( henv, hdbc, hstmt, strState, &SqlDbCode, strDbMessage, 100 , &cberrormsg); std::cout << er<<"err:"<