当数据库的选项允许为空时 而且此时内容为空
则一下查询会出错
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
李佳 阅读(2385)
评论(1) 编辑 收藏 引用 所属分类:
WIN32 应用开发