⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adoutils.cpp

📁 vc ADO 连接数据库
💻 CPP
📖 第 1 页 / 共 2 页
字号:
   case ADODB::adIUnknown:
      strTmp = "(adIUnknown) A pointer to an IUnknown interface on an OLE object";
      break;
   case ADODB::adLongVarBinary:
      strTmp = "(adLongVarBinary) A long binary value (Parameter object only)";
      break;
   case ADODB::adLongVarChar:
      strTmp = "(adLongVarChar) A long String value (Parameter object only)";
      break;
   case ADODB::adLongVarWChar:
      strTmp = "(adLongVarWChar) A long null-terminated string value (Parameter object only)";
      break;
   case ADODB::adNumeric:
      strTmp = "(adNumeric) An exact numeric value with a fixed precision and scale";
      break;
   case ADODB::adSingle:
      strTmp = "(adSingle) A single-precision floating point value";
      break;
   case ADODB::adSmallInt:
      strTmp = "(adSmallInt) A 2-byte signed integer";
      break;
   case ADODB::adTinyInt:
      strTmp = "(adTinyInt) A 1-byte signed integer";
      break;
   case ADODB::adUnsignedBigInt:
      strTmp = "(adUnsignedBigInt) An 8-byte unsigned integer";
      break;
   case ADODB::adUnsignedInt:
      strTmp = "(adUnsignedInt) A 4-byte unsigned integer";
      break;
   case ADODB::adUnsignedSmallInt:
      strTmp = "(adUnsignedSmallInt) A 2-byte unsigned integer";
      break;
   case ADODB::adUnsignedTinyInt:
      strTmp = "(adUnsignedTinyInt) A 1-byte unsigned integer";
      break;
   case ADODB::adUserDefined:
      strTmp = "(adUserDefined) A user-defined variable";
      break;
   case ADODB::adVarBinary:
      strTmp = "(adVarBinary) A binary value (Parameter object only)";
      break;
   case ADODB::adVarChar:
      strTmp = "(adVarChar) A String value (Parameter object only)";
      break;
   case ADODB::adVariant:
      strTmp = "(adVariant) An OLE Automation Variant";
      break;
   case ADODB::adVarWChar:
      strTmp = "(adVarWChar) A null-terminated Unicode character string (Parameter object only)";
      break;
   case ADODB::adWChar:
      strTmp = "(adWChar) A null-terminated Unicode character string";
      break;
   default:   
      strTmp.Format( "%d = = Unrecognized Type", e );
   }
   
   return strTmp;
}

/////////////////////////////////////////////////////////////////////////////
// 
// CrackStrVariant()  Taken from the CCrack::strVariant method found in the
//      DAOVIEW sample that ships with Visual C++ 4.X/5.0
//  
// Parameters:  var - Reference to an instance of COleVariant.
//
// Returns:     An instance of CString with the value of COleVariant 
//              (if possible).  Otherwise a string containing the type 
//              of data contained by COleVariant.
//
/////////////////////////////////////////////////////////////////////////////

CString CrackStrVariant(const _variant_t&  var)
{
    CString strRet;
    strRet = _T("Fish");
    switch(var.vt){
        case VT_EMPTY:
        case VT_NULL:
            strRet = _T("NULL");
            break;
        case VT_I2:
            strRet.Format(_T("%hd"),V_I2(&var));
            break;
        case VT_I4:
            strRet.Format(_T("%d"),V_I4(&var));
            break;
        case VT_R4:
            strRet.Format(_T("%e"),(double)V_R4(&var));
            break;
        case VT_R8:
            strRet.Format(_T("%e"),V_R8(&var));
            break;
        case VT_CY:
            strRet = COleCurrency(var).Format();
            break;
        case VT_DATE:
            strRet = COleDateTime(var).Format(_T("%m %d %y"));
            break;
        case VT_BSTR:
            strRet = V_BSTR( &var );
            break;
        case VT_DISPATCH:
            strRet = _T("VT_DISPATCH");
            break;
        case VT_ERROR:
            strRet = _T("VT_ERROR");
            break;
        case VT_BOOL:
            return ( V_BOOL(&var) ? _T("TRUE") : _T("FALSE"));
        case VT_VARIANT:
            strRet = _T("VT_VARIANT");
            break;
        case VT_UNKNOWN:
            strRet = _T("VT_UNKNOWN");
            break;
        case VT_I1:
            strRet = _T("VT_I1");
            break;
        case VT_UI1:
            strRet.Format(_T("0x%02hX"),(unsigned short)V_UI1(&var));
            break;
        case VT_UI2:
            strRet = _T("VT_UI2");
            break;
        case VT_UI4:
            strRet = _T("VT_UI4");
            break;
        case VT_I8:
            strRet = _T("VT_I8");
            break;
        case VT_UI8:
            strRet = _T("VT_UI8");
            break;
        case VT_INT:
            strRet = _T("VT_INT");
            break;
        case VT_UINT:
            strRet = _T("VT_UINT");
            break;
        case VT_VOID:
            strRet = _T("VT_VOID");
            break;
        case VT_HRESULT:
            strRet = _T("VT_HRESULT");
            break;
        case VT_PTR:
            strRet = _T("VT_PTR");
            break;
        case VT_SAFEARRAY:
            strRet = _T("VT_SAFEARRAY");
            break;
        case VT_CARRAY:
            strRet = _T("VT_CARRAY");
            break;
        case VT_USERDEFINED:
            strRet = _T("VT_USERDEFINED");
            break;
        case VT_LPSTR:
            strRet = _T("VT_LPSTR");
            break;
        case VT_LPWSTR:
            strRet = _T("VT_LPWSTR");
            break;
        case VT_FILETIME:
            strRet = _T("VT_FILETIME");
            break;
        case VT_BLOB:
            strRet = _T("VT_BLOB");
            break;
        case VT_STREAM:
            strRet = _T("VT_STREAM");
            break;
        case VT_STORAGE:
            strRet = _T("VT_STORAGE");
            break;
        case VT_STREAMED_OBJECT:
            strRet = _T("VT_STREAMED_OBJECT");
            break;
        case VT_STORED_OBJECT:
            strRet = _T("VT_STORED_OBJECT");
            break;
        case VT_BLOB_OBJECT:
            strRet = _T("VT_BLOB_OBJECT");
            break;
        case VT_CF:
            strRet = _T("VT_CF");
            break;
        case VT_CLSID:
            strRet = _T("VT_CLSID");
            break;
    }
    WORD vt = var.vt;
    if(vt & VT_ARRAY){
        vt = vt & ~VT_ARRAY;
        strRet = _T("Array of ");
    }
    if(vt & VT_BYREF){
        vt = vt & ~VT_BYREF;
        strRet += _T("Pointer to ");
    }
    if(vt != var.vt){
        switch(vt){
            case VT_EMPTY:
                strRet += _T("VT_EMPTY");
                break;
            case VT_NULL:
                strRet += _T("VT_NULL");
                break;
            case VT_I2:
                strRet += _T("VT_I2");
                break;
            case VT_I4:
                strRet += _T("VT_I4");
                break;
            case VT_R4:
                strRet += _T("VT_R4");
                break;
            case VT_R8:
                strRet += _T("VT_R8");
                break;
            case VT_CY:
                strRet += _T("VT_CY");
                break;
            case VT_DATE:
                strRet += _T("VT_DATE");
                break;
            case VT_BSTR:
                strRet += _T("VT_BSTR");
                break;
            case VT_DISPATCH:
                strRet += _T("VT_DISPATCH");
                break;
            case VT_ERROR:
                strRet += _T("VT_ERROR");
                break;
            case VT_BOOL:
                strRet += _T("VT_BOOL");
                break;
            case VT_VARIANT:
                strRet += _T("VT_VARIANT");
                break;
            case VT_UNKNOWN:
                strRet += _T("VT_UNKNOWN");
                break;
            case VT_I1:
                strRet += _T("VT_I1");
                break;
            case VT_UI1:
                strRet += _T("VT_UI1");
                break;
            case VT_UI2:
                strRet += _T("VT_UI2");
                break;
            case VT_UI4:
                strRet += _T("VT_UI4");
                break;
            case VT_I8:
                strRet += _T("VT_I8");
                break;
            case VT_UI8:
                strRet += _T("VT_UI8");
                break;
            case VT_INT:
                strRet += _T("VT_INT");
                break;
            case VT_UINT:
                strRet += _T("VT_UINT");
                break;
            case VT_VOID:
                strRet += _T("VT_VOID");
                break;
            case VT_HRESULT:
                strRet += _T("VT_HRESULT");
                break;
            case VT_PTR:
                strRet += _T("VT_PTR");
                break;
            case VT_SAFEARRAY:
                strRet += _T("VT_SAFEARRAY");
                break;
            case VT_CARRAY:
                strRet += _T("VT_CARRAY");
                break;
            case VT_USERDEFINED:
                strRet += _T("VT_USERDEFINED");
                break;
            case VT_LPSTR:
                strRet += _T("VT_LPSTR");
                break;
            case VT_LPWSTR:
                strRet += _T("VT_LPWSTR");
                break;
            case VT_FILETIME:
                strRet += _T("VT_FILETIME");
                break;
            case VT_BLOB:
                strRet += _T("VT_BLOB");
                break;
            case VT_STREAM:
                strRet += _T("VT_STREAM");
                break;
            case VT_STORAGE:
                strRet += _T("VT_STORAGE");
                break;
            case VT_STREAMED_OBJECT:
                strRet += _T("VT_STREAMED_OBJECT");
                break;
            case VT_STORED_OBJECT:
                strRet += _T("VT_STORED_OBJECT");
                break;
            case VT_BLOB_OBJECT:
                strRet += _T("VT_BLOB_OBJECT");
                break;
            case VT_CF:
                strRet += _T("VT_CF");
                break;
            case VT_CLSID:
                strRet += _T("VT_CLSID");
                break;
        }
    }
    return strRet;
}

void ImportErrorEx( _com_error &e, CHorzListBox &List1, ADODB::_ConnectionPtr Conn1 )
{
    // Try/Catch Block
    try
    {
        // ADO Error/Exception Handler
        AdoErrorEx( List1, Conn1 );

        //Non-ADO Native error/Exception Handler
        List1.AddString( "*** ERROR CONDITION! ***" );
        LogReset();
        LogException( e );
        LogDisplay( List1 );

        // #import bug workaround (should not be necessary after Visual C++ 5.0 Service Pack 3)
        IErrorInfo * pErr = e.ErrorInfo();
        pErr->Release();
        pErr->Release();
    }
    catch( SEH_Exception &e )
    {
        List1.AddString( "*** UNABLE TO LOG ERROR *** (Win32 Exception was raised while logging exception)" );

        //Non-ADO Native error/Exception Handler
        LogReset();
        LogException( e );
        LogDisplay( List1 );
    }
    catch(...)
    {
        List1.AddString( "*** UNABLE TO LOG ERROR *** (Unknown Exception was raised while logging exception)" );

        //Non-ADO Native error/Exception Handler
        LogReset();
        LogException();
        LogDisplay( List1 );
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -