_variant_t和_bstr_t
_variant_t和_bstr_t这两个类分别封装并管理VARIANT和BSTR这两种数据类型,
VARIANT和BSTR这两种类型是COM中使用的数据类型。
实现_variant_t向int,String ,double,long,byte等类型转换
为了C++中的变量应用到ADO编程中,只能进行数据类型的转换。
通过_variant_t和_bstr_t这两个类,就可
_variant_t var;
var=m_pRecordset->GetCollect ("UserName");
ss=(TCHAR*)(_bstr_t)vUsername;//转换成字符串
以方便的把C++类型变量转换成COM中的变量了。
CString转换为_variant_t:
CString str = _T("xxx");
_variant_t var = (LPCTSTR)str;
把CString 转换为_variant_t:
整型:(long) (_variant_t) m_pRecordset->GetFieldByName("XX");
字符串型:(m_pRecordset->GetFieldByName("XX")).bstrVal;
把一个日期字符串转成_variant_t:
.CString可以直接转_variant_t。
CString szTime("2008-8-8 08:08:08");
_variant_t mt = szTime;
._variant_t转CString用如下函数:
CString VariantToCString(_variant_t var)
{ CString str; //转换以后的字符串 switch(var.vt) {
case VT_BSTR: //var is BSTR type str=var.bstrVal; break;
case VT_I2: //var is short int type str.Format("%d",(int)var.iVal); break;
case VT_I4: //var is long int type str.Format("%d",var.lVal); break;
case VT_R4: //var is float type str.Format(".6f",(double)var.fltVal); break;
case VT_R8: //var is double type str.Format(".6f",var.dblVal); break;
case VT_CY: //var is CY type str=COleCurrency(var).Format(); break;
case VT_DATE: //var is DATE type str=COleDateTime(var).Format(); break;
case VT_BOOL: //var is VARIANT_BOOL str= (var.boolVal==) ?L"FALSE": L"TRUE"; break;
default: str.Format("Unk type %d\n",var.vt); TRACE("Unknown type %d\n",var.vt); } return str; }
把一个int转换为_variant_t类型:
int a = ;
_variant_t var; var = (_variant_t)(long)a;

UpdateData();
CString strCmd = L"select * from n where 材料='";
strCmd += m_Querymaterial;
strCmd += "'";
m_pRecordset = m_pConnection->Execute(_bstr_t(strCmd), &RecordsAffected, adCmdText);

_variant_t vM,vN;
try
{
while(!m_pRecordset->adoEOF)
{
//取得第0列的值,从0开始计数
vM=m_pRecordset->GetCollect(_variant_t((long)));
//取得“折射率”这一列的值
vN=m_pRecordset->GetCollect("折射率");
CString strtemp;
if (vM.vt!=VT_NULL)
{
strtemp.Format(_T("%s"),vM.lVal);
}
if (vN.vt!=VT_NULL)
{
strtemp+=" ";
strtemp+=(LPCTSTR)(_bstr_t)vN;
}
m_list1.AddString(strtemp);
m_list1.AddString(_T("\n"));
m_pRecordset->MoveNext();//移动到下一条记录
}
}
catch(_com_error &e)
{
AfxMessageBox(e.Description());
return;
}
if (m_pRecordset->Close())
{
m_pRecordset->Close();
m_pRecordset=NULL;
}
if (m_pConnection->State)
{
m_pConnection->Close();
m_pConnection=NULL;
}
}
_variant_t和_bstr_t的更多相关文章
- 关于使用_bstr_t的一个坑
编程中需要将_variant_t转换为char*,常用的方法是:(const char*)_bstr_t(c_variant_t); 使用_bstr_t的构造函数: _bstr_t(const _v ...
- tagVARIANT、VARIANT、_variant_t和COleVariant
tagVARIANT是一个结构体struct: C++ Code: tagVARIANT 123456789101112131415161718192021222324252627282930313 ...
- c++ ado 调用存储过程并得到输出参数和返回值
// AccessSqlserverByAdo.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <Windows.h ...
- CString-int-string-char-BSTR之间的转换
一.CString, int, string, char*之间的转换 string 转 CString CString.Format("%s", string.c_str());c ...
- C++ atol
函数名: atol 功 能: 把字符串转换成长整型数 用 法: long atol(const char *nptr); 简介编辑 相关函数: atof,atoi,strtod,strtol,st ...
- VC常用数据类型使用转换
我们先定义一些常见类型变量借以说明 int i = 100; long l = 2001; float f=300.2; double d=12345.119; char username[]=&qu ...
- C++中各种数据量类型转换
要在Unicode字符集环境下把CString转化为char* 方法: CString str = _T("D://校内项目//QQ.bmp");//////leo这个NB 可以 ...
- VC与ADO数据库操作
VC与ADO数据库操作 学研部的同志们,大家好! 想开一次学习会,实习时间冲突了,只好把文档发给大家看了.重点推荐李振龙的BMP读图教程! 尤其是大三GIS班的同志,注意了,可能实习用得上的! 一.A ...
- 在Visual C++中的用ADO进行数据库编程
1. 生成应用程序框架并初始化OLE/COM库环境 创建一个标准的MFC AppWizard(exe)应用程序,然后在使用ADO数据库的InitInstance函数中初始化OLE/COM库(因为ADO ...
随机推荐
- Java高级面试题积累(二)
简述23种设计 抽象工厂模式(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口.而无需指定它们详细的类. 适配器模式(Adapter):将一个类的接口转换成客户希望的另外 ...
- CCCallFunc和CCSequence
class CC_DLL CCCallFunc : public CCActionInstant //<NSCopying> void Issue1305_2::onEnter() { A ...
- angular学习笔记(八)-控制视图显示隐藏
本篇介绍angular控制视图的显示和隐藏: 通过给元素添加ng-show属性或者ng-hide属性来控制视图的显示或隐藏: ng-show: 绑定的数据值为true时,显示元素,值为false时,隐 ...
- Loadrunner常用操作
LoadRunner 参数化 为什么需要参数化? 大众理解:为了更加真实的模拟用户操作 底层原理: 1,应用服务,数据库会校验该值的唯一性(unique key) 2,为了避免数据库的查询缓存对性能测 ...
- Windows下对postgre开启远程连接权限
编辑 删除 前言:Windows下对postgre开启远程连接权限,下面是实际操作过程中的手顺 1.找到postgresql.conf文件,注意安装路径 D:\Program Files (x86)\ ...
- xml与dataset的数据交互
1. this.dsConfig = new DataSet(); //使用指定的文件将 XML 架构和数据读入 System.Data.DataSet. this.dsConfig.ReadXml( ...
- plsql 只能识别32位的oracle解决办法
http://www.cnblogs.com/ymj126/p/3712727.html#undefined
- idea中maven依赖不能下载的解决办法
使用maven 命令 maven install 在项目所在文件夹 执行.
- 【WPF/WAF】界面布局(View)文件的多层嵌套(Nest)
碎碎念:使用的是略冷门的Window Application Foundation(WAF)框架,搜到的都是WPF的UserControl用户控件的用法,实在蛋疼. 需求:主界面ShellWindow ...
- C语言 · Huffuman树
基础练习 Huffuman树 时间限制:1.0s 内存限制:512.0MB 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出 ...