VC++通过ADO连接数据库查询时返回空值报错的解决方案
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了VC++通过ADO连接数据库查询时返回空值报错的解决方案,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1038字,纯文字阅读大概需要2分钟。
内容图文
当数据库的字段允许为空时, 而且此时内容也为空时, 则执行查询会出错,例如 CString str = pRecordset-GetFields()-GetItem((long)0)-GetValue(); 或者 str = pRecordset -GetCollect(posInfo); 会弹出如下窗口提示出错! 更加奇怪的是 catch(...)也抓不到
当数据库的字段值允许为空时, 而且此时内容也为空时,则执行查询会出错,例如
CString str = pRecordset->GetFields()->GetItem((long)0)->GetValue();
或者
str= pRecordset->GetCollect("posInfo");
会弹出如下窗口提示出错!
更加奇怪的是 catch(...)也抓不到异常
今天碰着个问题算是头弄大了 最后终于弄好了
报错的原因: 在GetCollct返回了NULL之后 由于str是一个CString对象 编译器自动将_varint_t转换成CString 而此时_varint_t为空 因此转换失败 不是数据库的异常 而且根本就不是异常 所以 catch(…)无法抓住。
解决方案
在可能为空的地方,加入如下代码
_variant_t var; var= m_pRecordset->GetCollect("posInfo"); //可能为空 if(var.vt != VT_NULL) //为NULL { strPosInfo = var; } else { strPosInfo = “”; }
就可以检测NULL值了
内容总结
以上是互联网集市为您收集整理的VC++通过ADO连接数据库查询时返回空值报错的解决方案全部内容,希望文章能够帮你解决VC++通过ADO连接数据库查询时返回空值报错的解决方案所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。