在ADO数据库连接中遇到的类型转换

ADO属于COM组件,其用到的数据类型主要为VARIANT;

在MFC下,所用的数据类型为CString;

MFC下,控件用到的数据类型多为:LPTSTR;

其中,LPTSTR和CString可相互转换。

所以会碰到这几种数据类型的相互转换。详细在CString博文中有说明,此处为简化版本,为连接ADO数据库专用。


1. 将VARIANT类型的转为LPTSTR类型

在查询记录时

_variant_t UserName;
_variant_t UserID; 
while(!m_pRst->adoEOF)
 {
  UserName=m_pRst->GetCollect("UserName");

  if(UserName.vt!=VT_NULL)
  {
   int Row=m_list.InsertItem(0, (LPCSTR)_bstr_t(UserName));
   UserID=m_pRst->GetCollect("UserID");
   if(UserID.vt!=VT_NULL)
   {
    m_list.SetItemText(Row,1,(LPCSTR)_bstr_t(UserID));
   }
  }
  m_pRst->MoveNext();
 }

查询记录之后,返回值的类型为:_variant_t 结构体类型,其中 vt 成员是enumeration枚举类型,可以用它来进行一些判断。

如例子中用到的VT_NULL表示值为空:""

_variant_t和_bstr_t都是COM组件中用到的数据类型,可以相互转换。

然后再将_bstr_t类型转为LPCSTR。

特别说明:

_T其实是一个宏,如果你定义了_UNICODE的话,它按UNICODE来编译,如果不定义的话,它按ANSI的方式编译,这样做的好处是你在选择是用ANSI还是UNICODE时不用修改代码了.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值