zoukankan      html  css  js  c++  java
  • 使用ADO操作数据库时一个好用的VARIANT类!

     

    inline CString VTOCSTR(VARIANT *v)
    {
     if(v->vt==VT_BSTR)
     {
      CString str((LPCWSTR)v->bstrVal);
      return str;
     }
     else
     {
      return CString("");
     }
    }

    #define VTOLONG(v) ((v).vt==VT_I4 ? (LONG)(v).lVal:0L)
    #define VTODATE(v) ((v).vt==VT_DATE ? (CTime)(v).iVal:0L)


    class CVar : public VARIANT
     {
    public:
     CVar()
      {
      VariantInit(this);
      }
     CVar(VARTYPE vt, SCODE scode = 0)
      {
      VariantInit(this);
      this->vt = vt;
      this->scode = scode;
      }
     CVar(VARIANT var)
      {
      *this = var;
      }
     ~CVar()
      {
      VariantClear(this);
      }

     // ASSIGNMENT OPS.
     CVar & operator=(PCWSTR pcwstr)
      {
      VariantClear(this);
      if (NULL == (this->bstrVal = SysAllocStringLen(pcwstr, wcslen(pcwstr))))
       throw E_OUTOFMEMORY;
      this->vt = VT_BSTR;
      return *this;
      }
     CVar & operator=(VARIANT var)
      {
      HRESULT hr;

      VariantClear(this);
      if (FAILED(hr = VariantCopy(this, &var)))
       throw hr;
      return *this;
      }

    .
     operator STR() const
     {
      if(VT_BSTR == this->vt)
       return this->bstrVal;
      else
       return NULL;
     }

     operator LONG() const
     {
      if (VT_I4 == this->vt)
       return this->lVal;
      else
       return NULL;
     }
     operator DATE() const
     {
      if (VT_DATE == this->vt)
       return this->date;
      else
       return NULL;
     }
     operator CY() const
     {
      COleCurrency cyNULL;
      cyNULL.SetCurrency(0,0);
      if (VT_CY == this->vt)
       return this->cyVal;
      else
       return cyNULL;
     }
     HRESULT Clear()
     {
      return VariantClear(this);
     }
    };

    这是我在MSDN中整理并增强的一个类,希望对进行ADO操作数据库的伙计们有所帮助!

  • 相关阅读:
    在归并排序中对小数组采用插入排序实现代码
    PAT 1032. Sharing
    1031. Hello World for U
    PAT 1030. Travel Plan
    PAT 1029. Median
    PAT 1028. List Sorting
    PAT 1027. Colors in Mars
    PAT 1026. Table Tennis
    PAT 1025. PAT Ranking
    Several Important Commands in GMT
  • 原文地址:https://www.cnblogs.com/xiaowangba/p/6314620.html
Copyright © 2011-2022 走看看