在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时不用修改代码了.

 

你可能感兴趣的:(在ADO数据库连接中遇到的类型转换)