_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中的变量了。

     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)0));
            //取得“折射率”这一列的值
            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;
    }
}
时间: 2024-10-28 11:55:24

_variant_t和_bstr_t的相关文章

vc字符串转换处理:(绝对精华,收集所有的例子)

vc字符串转换处理:(绝对精华,收集所有的例子) 1.头文件中要定义宏; #define   UNICODE         #define   _UNICODE     //////////////////// char   buf[128];    memset(buf,0,128);     strcpy(buf,"你好");     WCHAR   pCName[128];     memset(pCName,0,128);     MultiByteToWideChar(CP

VC常用数据类型使用转换

我们先定义一些常见类型变量借以说明 [cpp] view plain copy int i = 100; long l = 2001; float f=300.2; double d=12345.119; char username[]="赵三"; char temp[200]; char *buf; CString str; _variant_t v1; _bstr_t v2; 一.其它数据类型转换为字符串 短整型(int) [cpp] view plain copy itoa(i,

【转载】CString、BSTR和LPCTSTR之间的区别

原文:http://www.cnblogs.com/GT_Andy/archive/2011/01/18/1938605.html 一.定义 1.CString:动态的TCHAR数组.它是一个完全独立的类,封装了+等操作符和字符串操作方法. 2.BSTR:专有格式的字符串(需要使用系统函数来操纵).定义为:typedef OLECHAR FAR* BSTR 3.LPCTSTR:常量的TCHAR指针.定义为:typedef const char* LPCTSTR 二.要点 1.char*:指向AN

xml基本使用

void CRgnTestDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 ::CoInitialize(NULL); CComPtr<MSXML2::IXMLDOMDocument> pDoc; pDoc.CoCreateInstance(_uuidof(MSXML2::DOMDocument)); pDoc->load("test.xml"); CComPtr<MSXML2::IXMLDOMNodeLis

c++ ado 调用存储过程并得到输出参数和返回值

// AccessSqlserverByAdo.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <Windows.h> #include <iostream> #include <string> using namespace std; #import "C:\Program Files\Common Files\System\ado\msado15.dll" rename

MFC中使用ADO进行数据库操作

参考FROM:http://hi.baidu.com/sunkanghome/item/e1fda510b3186359f1090ee2 数据库与数据库编程: 当前各种主流数据库有很多,包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS ACCESS等等. 数据库编程是对数据库的创建.读写等一列的操作.数据库编程分

数据库编程总结

当前各种主流数据库有很多,包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS ACCESS等等.数据库编程是对数据库的创建.读写等一列的操作.数据库编程分为数据库客户端编程与数据库服务器端编程.数据库客户端编程主要使用ODBC API.ADO.ADO.NET.OCI.OTL等方法:数据库服务端编程主要使用OLE D

C++ atol

函数名: atol 功 能: 把字符串转换成长整型数 用 法: long atol(const char *nptr); 简介编辑 相关函数: atof,atoi,strtod,strtol,strtoul 表头文件: #include<stdlib.h> 定义函数: long atol(const char *nptr); 函数说明: atol()会扫描参数nptr字符串,跳过前面的空格字符(就是忽略掉字符串左空格的意思),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('

CString char BSTR 转换

转自:http://www.cnblogs.com/lingyun1120/archive/2011/11/03/2234169.html 一.CString, int, string, char*之间的转换 string 转 CStringCString.Format("%s", string.c_str());char 转 CString  CString.Format("%s", char*);char 转 string  string s(char *);s