posts - 23,  comments - 20,  trackbacks - 0
当数据库的选项允许为空时  而且此时内容为空
则一下查询会出错
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值了




posted on 2009-08-21 16:01 李佳 阅读(2303) 评论(1)  编辑 收藏 引用 所属分类: WIN32 应用开发

FeedBack:
# re: 解决了VC ADO链接数据库查询时返回空值 报错的问题
2013-09-24 12:01 | cyfage
其实catch可以抓住的……

catch (_com_error error)
{
CString errormsg;
errormsg.Format("DB Error: %s", error.ErrorMessage());
return;
}  回复  更多评论
  

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2009年8月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿

随笔分类

随笔档案

文章档案

相册

搜索

  •  

最新评论

阅读排行榜

评论排行榜