公司职员 电影:variant_t

来源:百度文库 编辑:中财网 时间:2024/04/30 02:59:04
variant_t

计算机   2008-05-06 15:19   阅读63   评论0   字号: 大大  中中  小小 _variant_t 是什么数据类型??

这个问题的答案比较广泛:   

  我所知道常用的   

  1。在执行的SQL语句一般都是_bstr_t   

  2.Connection   中的RecordsAffected   为VARIANT   

  3.使用get_Value()获得的记录的值为   VAARIANT   

      等等。。。   

  _bstr_t   中记录了字符串的长度,   

  _variant_t   记录有数据的类型和数据的值   

      如   _variant_t   ttt;   

      ttt.vt=I4_VT;   表示数据类型为整数   

      ttt.lVal   为数据的值

转载:

怎么判断_variant_t的值是什么类型

/*

将 _variant_t 类型的变量,转换成字符串(比如如果是数字,则转换成数字对应的字符串 :如 10.2 -> "10.200000")

*/

_variant_t var;  

CString str; //转换以后的字符串

//以下代码演示如何转换为C标准字符串型

if (var.vt == VT_I4)

{

    long lNum;

    char szCh[21];

    str=var.bstrVal;

    WideCharToMultiByte

             (CP_ACP, 0, var.bstrVal, -1,

              szCh, sizeof(szCh), NULL, NULL);

}

//以下代码演示如何转换成逻辑型

if( var.vt == VT_BOOL)

{

    BOOL bVar;

    lNum=var.lVal;

    bVar= var.boolVar==0? FALSE : TRUE;

}

//以下代码演示为其余类型(补充)

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("%10.6f",(double)var.fltVal);

     break;

case VT_R8:         //var is double type

     str.Format("%10.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==0) ?"FALSE": "TRUE";

     break;

default:

     str.Format("Unk type %d\n",var.vt);

     TRACE("Unknown type %d\n",var.vt);

}