使用ADO时,如果数据库字段内容为空时,假设有数据库字段Address内容为空,用GetCollect("Address")取出后,再用(LPCTSTR)(_bstr_t)vAddress转化时就会报错退出,咋办?有什么函数可以判断vAddress是空的吗?

解决方案 »

  1.   

    CString cs;
    try{
      cs = (LPCTSTR)(_bstr_t)vAddress;
    }
    catch(...)
    {
      cs.Empty();
    }
      

  2.   

    OK!解决,送分!
    但我自己也找到了另一好方法供大家参考:
    CString cs;
    if(vAddress.vt==VT_BSTR)
      cs=(LPCTSTR)(_bstr_t)vAddress;
    else
      cs.Empty();
      

  3.   

    以下是我读字段内容的操作,我把读出的字段内容存于CString str中
    //★★★★★★★★处为判断并处理字段为空或NULL的情况
    CString str = _T("");
    _variant_t vtFld;
    _variant_t vtIndex;tIndex.vt = VT_I2;
    vtIndex.iVal = nIndex;

    try
    {
        vtFld = m_pRecordset->Fields->GetItem(vtIndex)->Value;    //通过判断返回值vtFld.vt的类型进行数据转换
        switch(vtFld.vt) 
        {
           case VT_BSTR:
                str = vtFld.bstrVal;
                break;
           case VT_I2:
           case VT_UI1:
                str = IntToStr(vtFld.iVal);
                break;
           ......
           ......
           ...... 
           case VT_EMPTY://★★★★★★★★
           case VT_NULL://★★★★★★★★
                str.Empty();
                break;
           default:
                str.Empty();
                return FALSE;
        }
        strValue = str;
        return TRUE;
    }
    catch(_com_error &e)
    {
       dump_com_error(e);
       return FALSE;
    }