📄 desexec.cpp
字号:
#include "stdafx.h"
#include "desexec.h"
#include <strstrea.h>
SQLRETURN Decrypt_ODBC_Return_Code( SQLSMALLINT fHandleType, SQLHANDLE hHandle,
SQLRETURN err, char *func, int line, const char *file)
{
switch( err )
{
case SQL_SUCCESS:
cout << "SQL_SUCCESS: " << func << endl;
return err;
case SQL_SUCCESS_WITH_INFO:
cout << "SQL_SUCCESS_WITH_INFO: " << func << endl;
break;
case SQL_STILL_EXECUTING:
cout << "SQL_STILL_EXECUTING: " << func << endl;
return err;
case SQL_NEED_DATA:
cout << "SQL_NEED_DATA: " << func << endl;
return err;
case SQL_NO_DATA_FOUND:
cout << "SQL_NO_DATA_FOUND: " << func << endl ;
return err;
}
char *pBuffer = new char[2048];
ostrstream err_msg( pBuffer, 2048 );
RETCODE rc = SQL_SUCCESS;
char szSqlState[6];
SQLINTEGER NativeError;
char szErrorMsg[1024];
SQLSMALLINT cbErrorMsg;
if( fHandleType == SQL_HANDLE_ENV || fHandleType == SQL_HANDLE_DBC || fHandleType == SQL_HANDLE_STMT )
{
rc = SQLGetDiagRec( fHandleType, hHandle, 1, (SQLCHAR*)szSqlState,
&NativeError, (SQLCHAR*)szErrorMsg, 1024, &cbErrorMsg ) ;
if (RC_SUCCESSFUL(rc))
err_msg << szSqlState << ", native=" << NativeError << ", " << szErrorMsg << endl
<< "during exec: " << func << ends << endl;
}
else
{
err_msg << ends;
szSqlState[0]=0;
}
switch( err )
{
case SQL_SUCCESS_WITH_INFO:
cout << err_msg.str() << endl;
return err;
case SQL_ERROR:
cout << "SQL_ERROR: " << err_msg.str() << "\n" << file << "," << line;
return err;
case SQL_INVALID_HANDLE:
cout << "SQL_INVALID_HANDLE: " << err_msg.str() << "\n" << file << "," << line;
return err;
default:
cout << "(unknown return code)" << err_msg.str() << "\n" << file << "," << line;
return err;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -