VC++ 通过ADO连接数据库查询时返回空值报错的解决方案

当数据库的字段值允许为空时, 而且此时内容也为空时,则执行查询会出错,例如

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连接数据库查询时返回空值报错的解决方案

时间: 2024-10-10 02:47:24

VC++ 通过ADO连接数据库查询时返回空值报错的解决方案的相关文章

sublime text 2编译Python时打印中文报错的解决方案

当用sublime text 2 编译 python 文件时,若 print 打印出的中文时,控制台会报错: [Decode error - output not utf-8] 解决方案如下: 打开 sublime text 2 首选项 -> 浏览插件,进入 Python 文件夹,并找到 Python.sublime-build 文件. 打开如下: { "cmd": ["python", "-u", "$file"],

使用Ajax时[object%20object] 报错的解决方案

踩坑经过 最近初学Ajax,当我想把Ajax应用到自己项目中的时候,没有达到理想的效果,还报了如下错误: 点击图中报错,产生报错页面如下: 当时写的Ajax如下: // 提交修改密码表单 $("#changePasseword").click(function(){ $.post({ url: "${pageContext.request.contextPath }/ChangePasswordServlet", data:$("#changePasswo

使用maven创建springMVC时返回页面报错

这是由于你的 Maven 编译级别是 jdk1.5 或以下,而你导入了 jdk1.6 以上的依赖包 解决办法: <build> <finalName></finalName> <plugins> <!-- define the project compile level --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId

ANE-如何加入ane,调试时又不报错

有时候我们加入ane,即使没有调用ane的功能,debug的时候也会报错无法调试,这是为什么呢?因为我们的ane没有把default包含进去. 首先我们的extension.xml要把default节点包含进去 <extension xmlns="http://ns.adobe.com/air/extension/3.1"> <id>net.digitalprimates.volume</id> <versionNumber>0.0.1&

【翻译自mos文章】OGG add Supplemental Logging 时失败,报错为 块损坏(Block Corruption)

OGG add Supplemental Logging 时失败,报错为 块损坏(Block Corruption) 来源于: Add Supplemental Logging Fails Due To Block Corruption (文档 ID 1468322.1) 适用于: Oracle Server - Enterprise Edition - Version 10.2.0.5 to 12cBETA1 [Release 10.2 to 12.1] Information in this

Navicat导入数据时发生了报错 --- 1153 - Got a packet bigger than &#39;max_allowed的处理办法

今天我在使用Navicat导入.sql文件数据时,发现本来是80万条的数据,结果只导入了10万条左右,而且在其错误信息日志中,我发现了这样一条错误:1153 - Got a packet bigger than 'max_allowed. 度娘了一番后,发现越来是我的SQL文件远远大于MySQL默认执行的文件大小,所以执行不过去. 解决方法: 在MySQL安装目录下找到文件my.ini,搜索[mysqld],在其下面添加一句话 max_allowed_packet=521M  ##该处按照自己的

Debug程序时,VS报错:由于端口“*****”正在使用,无法启动VS开发服务器

Debug程序时,VS报错:由于端口“*****”正在使用,无法启动VS开发服务器 解决办法: 右键单击web项目,选择“属性”,选择属性页左侧的web选项卡,在选项卡页面的下部有一个“服务器--使用VisualStuido开发服务器--特定端口”的选项,可以设置为自动分配端口或者修改特定端口

前端ajax用post方式提交json数据给后端时,网络报错 415

项目框架:spring+springmvc+mybatis 问题描述:前端ajax用post方式提交json数据给后端时,网络报错 415 前端异常信息:Failed to load resource: the server responded with a status of 415 (Unsupported Media Type) 后端异常信息:无 报错原因:缺少jackson包 类似问题注意点: springmvc添加配置.注解: pom.xml添加jackson包引用: Ajax请求时没

nuget包管理nuget服务器发布包时出现请求报错 406 (Not Acceptable)

在window服务器上部署nuget服务器时,发布包时出现请求报错 406 (Not Acceptable) 验证用户名.密码正确的情况下,还是出现上面错误.后面跟踪服务器日志,发现window\temp文件超过65535,删除过期临时文件后即可 原文地址:https://www.cnblogs.com/94cool/p/10749129.html