當(dāng)數(shù)據(jù)庫的選項允許為空時 而且此時內(nèi)容為空
則一下查詢會出錯
strPosInfo= m_pRecordset->GetCollect("posInfo");
更加奇怪的是 catch(...)也抓不到異常
今天碰著個問題算是頭弄大了 最后終于弄好了
原因很簡單
報錯的問題
錯誤原因 在GetCollct返回了NULL之后
由于strPosInfo是一個CString對象
編譯器自動將_varint_t轉(zhuǎn)換成CString 而此時_varint_t為空 因此轉(zhuǎn)換失敗 不是數(shù)據(jù)庫的異常
而且根本就不是異常 所以 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
李佳 閱讀(2415)
評論(1) 編輯 收藏 引用 所屬分類:
WIN32 應(yīng)用開發(fā)