从CQ(一种需求变更处理软件)提供的接口访问它的数据库,其中数据库的一个字符串字段有时值为NULL,从接口读到的这个字段的值为_bstr_t类型的,谁知道如何判断这个NULL值?无论用convertBSTRtoString()还是string=bstr_t都报Exception

解决方案 »

  1.   

    _bstr_t bstrVar("test"); 
    const char *buf = bstrVar;
      

  2.   

    _variant_t vxx,
        vxx = m_pRecordset->GetCollect(XXXX);
       
        if(vxx.vt != VT_NULL)
       {
          
        }
    可以用(_bstr_t)vxx把_variant_t转成_bstr_t
      

  3.   

    看清楚我的问题!!!!!不是没法转换,而是原先的字段为NULL值所以转换有问题!
      

  4.   

    你也看清楚偶的回复
       
     (vxx.vt != VT_NULL)
    用这个可以判断是否为空
    但是这个vxx是
      _variant_t ,所以要判断以后再转~~
      

  5.   

    对不起,没看清楚你的帖子?问个问题:那个地方为什么要用GetCollect(XXXX);
    而不是FieldInfoPtr->GetValue(),好像只有这样才能得到字段值啊?
      

  6.   

    首先表示非常感谢,我此处通过CQ接口得到的字段值是_bstr_t类型,不是_variant_t类型,就_bstr_t类型,怎么判断其值为NULL?
      

  7.   

    你的接口中
    有GetStatus 
    这个方法吗??要先判断那个字段时候是否是空~
      

  8.   

    对不起,没看清楚你的帖子?问个问题:那个地方为什么要用GetCollect(XXXX);
    而不是FieldInfoPtr->GetValue(),好像只有这样才能得到字段值啊?那是因为访问数据库用的接口不一样啊,你的那个可能是木有GetCollect的
      

  9.   

    谢谢,有个GetValueStatus(),多谢你的帮助!