解决了VC ADO链接数据库查询时返回空值 报错的问题

解决了VC ADO链接数据库查询时返回空值 报错的问题
当数据库的选项允许为空时  而且此时内容为空
则一下查询会出错
strPosInfo= m_pRecordset->GetCollect("posInfo");       
更加奇怪的是  catch(...)也抓不到异常
今天碰着个问题算是头弄大了  最后终于弄好了
原因很简单

报错的问题

错误原因   在GetCollct返回了NULL之后   由于strPosInfo是一个CString对象  编译器自动将_varint_t转换成CString  而此时_varint_t为空  因此转换失败  不是数据库的异常 而且根本就不是异常 所以  catch(…)无法抓住

解决方案

在可能为空的地方 利用

 1  _variant_t var;
 2 
 3  var =  m_pRecordset -> GetCollect( " posInfo " );           // 可能为空
 4 
 5  if (var.vt  !=  VT_NULL)    // 为NULL
 6 
 7         strPosInfo  =  var;
 8 
 9  else
10 
11         strPosInfo  =  “”;

就可以检测NULL值了




你可能感兴趣的:(解决了VC ADO链接数据库查询时返回空值 报错的问题)