使用ADO时,如果数据库字段内容为空时,假设有数据库字段Address内容为空,用GetCollect("Address")取出后,再用(LPCTSTR)(_bstr_t)vAddress转化时就会报错退出,咋办?有什么函数可以判断vAddress是空的吗?
解决方案 »
- 《windows网络编程》第二版,看不懂
- 在套接字通信的接收函数中调用CMsflexgrid1所在的函数出错?
- CListCtrl的排序问题
- 请问木马是用哪种方法永久保存数据的?
- 在MFC中能不能动态的消息映射呀?
- 怎么取得当前工程文件夹下图片路径
- 什么时候Windows32程序的句柄是有效的?
- 在安装MSDN后,如何在VFP、VC中通过在线帮助中直接调用MSDN
- 怎样填充按钮客户区?
- VS2008 解决方案中的部分文件图标有个小箭头,请问怎么解决?
- 我用 vc 创建一个 win32 console application 我能不能创建 cfile 类???我想操作文件对象,请大家帮忙!!!
- ADO打开有内容的表但显示表为空,如何解决?
try{
cs = (LPCTSTR)(_bstr_t)vAddress;
}
catch(...)
{
cs.Empty();
}
但我自己也找到了另一好方法供大家参考:
CString cs;
if(vAddress.vt==VT_BSTR)
cs=(LPCTSTR)(_bstr_t)vAddress;
else
cs.Empty();
//★★★★★★★★处为判断并处理字段为空或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;
}