ADO访问数据库的数据类型转换问题

u011104519 2013-06-26 03:34:16
在用ADO访问数据库时,读取数据的数据类型是_variant_t,怎样将其转化成VC里的数据类型CString、int、或是其它的数据类型。
...全文
58 4 点赞 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
肆水東澤 2013-06-26
数值的 (int)(_variant_t)pRecord->GetCollect("XXX");//或float 字符的 (char*)(_bstr_t)pRecord->GetCollect("XXX");//或LPCTSTR
  • 打赏
  • 举报
回复
清水泠泠 2013-06-26
_variant_t name; name= m_pRecordset->GetCollect("name"); CString str = (LPCTSTR)(_bstr_t)name;
  • 打赏
  • 举报
回复
jimette 2013-06-26
_variant_t var; ........ //CString ::VariantChangeType(&var,&var,0,VT_BSTR); CString str=var.bstrval; //时间 ::VariantChangeType(&var,&var,0,VT_DATE); COleDateTime odatetime=var.date 整形 ::VariantChangeType(&var,&var,0,VT_I2 ); int ivar=var.iVal 浮点 ::VariantChangeType(&var,&var,0,VT_R4 ); float fvar=var.fltVal 货币 ::VariantChangeType(&var,&var,0,VT_CY ); COleCurrency ocvar=var.cyVal;
  • 打赏
  • 举报
回复
清水泠泠 2013-06-26
你可以去看看_variant_t,他是一个封装好的类,构造函数如下 struct tagVARIANT { union { struct __tagVARIANT { VARTYPE vt; WORD wReserved1; WORD wReserved2; WORD wReserved3; union { LONG lVal; BYTE bVal; SHORT iVal; FLOAT fltVal; DOUBLE dblVal; VARIANT_BOOL boolVal; _VARIANT_BOOL bool; SCODE scode; CY cyVal; DATE date; BSTR bstrVal; IUnknown __RPC_FAR *punkVal; IDispatch __RPC_FAR *pdispVal; SAFEARRAY __RPC_FAR *parray; BYTE __RPC_FAR *pbVal; SHORT __RPC_FAR *piVal; LONG __RPC_FAR *plVal; FLOAT __RPC_FAR *pfltVal; DOUBLE __RPC_FAR *pdblVal; VARIANT_BOOL __RPC_FAR *pboolVal; _VARIANT_BOOL __RPC_FAR *pbool; SCODE __RPC_FAR *pscode; CY __RPC_FAR *pcyVal; DATE __RPC_FAR *pdate; BSTR __RPC_FAR *pbstrVal; IUnknown __RPC_FAR *__RPC_FAR *ppunkVal; IDispatch __RPC_FAR *__RPC_FAR *ppdispVal; SAFEARRAY __RPC_FAR *__RPC_FAR *pparray; VARIANT __RPC_FAR *pvarVal; PVOID byref; CHAR cVal; USHORT uiVal; ULONG ulVal; INT intVal; UINT uintVal; DECIMAL __RPC_FAR *pdecVal; CHAR __RPC_FAR *pcVal; USHORT __RPC_FAR *puiVal; ULONG __RPC_FAR *pulVal; INT __RPC_FAR *pintVal; UINT __RPC_FAR *puintVal; struct __tagBRECORD { PVOID pvRecord; IRecordInfo __RPC_FAR *pRecInfo; } __VARIANT_NAME_4; } __VARIANT_NAME_3; } __VARIANT_NAME_2; DECIMAL decVal; } __VARIANT_NAME_1; }; 可以看到它里面包含很多常用的数据类型,其中就有int 所以,int类型可以直接用,不需要转换 ,不过Cstring麻烦点,先转换成BSTR类型,在转换为CString 因为_variant_t类中有BSTR类型,没有Cstring,但是BSTR中有Cstring
  • 打赏
  • 举报
回复
相关推荐
发帖
数据库
创建于2007-09-28

3957

社区成员

VC/MFC 数据库
申请成为版主
帖子事件
创建了帖子
2013-06-26 03:34
社区公告
暂无公告