当数据库的字段值允许为空时, 而且此时内容也为空时,则执行查询会出错,例如 CString str = pRecordset->GetFields()->GetItem((long)0)->GetValue(); 或者 str= pRecordset->GetCollect("posInfo"); 会弹出如下窗口提示出错!
今天碰着个问题算是头弄大了 最后终于弄好了 报错的原因: 在GetCollct返回了NULL之后 由于str是一个CString对象 编译器自动将_varint_t转换成CString 而此时_varint_t为空 因此转换失败 不是数据库的异常 而且根本就不是异常 所以 catch(…)无法抓住。
解决方案 在可能为空的地方,加入如下代码
就可以检测NULL值了 |
|