使用ADO操作数据库时一个好用的VARIANT类!

原创 2002年05月02日 10:18:00

 

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操作数据库的伙计们有所帮助!

VC++下ADO数据库操作的封装类

一、ADO 对象 对象 说明 Command Command 对象定义了将对数据源执行的指定命令。 Connection ...
  • woshibendangao
  • woshibendangao
  • 2014年01月20日 11:50
  • 1325

用ADO操作数据库的方法步骤

学习ADO时总结的一些经验     用ADO操作数据库的方法步骤   ADO接口简介 ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr...
  • gongluck93
  • gongluck93
  • 2016年09月19日 10:33
  • 2653

C# ADO.NET的五个常用对象及数据库连接操作

C#中和数据库连接的操作时开发中必不可少的,而ADO.NET就是其中的关键技术之一。常见的ADO.NET有五个常用的对象: SqlConnection 数据库连接对象 SqlCommand 数据...
  • ZorroBubble
  • ZorroBubble
  • 2013年06月13日 09:56
  • 2592

C# ADO.NET数据库操作基类(不好用你拿砖头拍)

  • 2013年04月10日 19:11
  • 1KB
  • 下载

自己写的一个使用ADO操作ACCESS数据库的例子

转载 http://blog.vckbase.com/hengai/articles/9705.html 自己写的一个使用ADO操作ACCESS数据库的例子,写的很简单,只完成了基本的功能。分为...
  • djh512
  • djh512
  • 2012年07月17日 20:47
  • 875

vc通过ado对sql数据库进行操作的一个简单小程序

  • 2008年09月12日 11:19
  • 195KB
  • 下载

ADO中_variant_t变量的使用与转换

  • 2010年05月12日 10:11
  • 95KB
  • 下载

一个直接通过ADO操作Access数据库的示例源码

  • 2009年10月23日 22:15
  • 2.67MB
  • 下载

ado方式操作数据库封装类的使用范例

  • 2015年03月08日 09:54
  • 83KB
  • 下载

一个ADO.NET数据库操作实例

  • 2010年06月23日 17:36
  • 2.83MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用ADO操作数据库时一个好用的VARIANT类!
举报原因:
原因补充:

(最多只允许输入30个字)