當(dāng)數(shù)據(jù)庫(kù)的選項(xiàng)允許為空時(shí) 而且此時(shí)內(nèi)容為空
則一下查詢(xún)會(huì)出錯(cuò)
strPosInfo= m_pRecordset->GetCollect("posInfo");
更加奇怪的是 catch(...)也抓不到異常
今天碰著個(gè)問(wèn)題算是頭弄大了 最后終于弄好了
原因很簡(jiǎn)單
報(bào)錯(cuò)的問(wèn)題
錯(cuò)誤原因 在GetCollct返回了NULL之后
由于strPosInfo是一個(gè)CString對(duì)象
編譯器自動(dòng)將_varint_t轉(zhuǎn)換成CString 而此時(shí)_varint_t為空 因此轉(zhuǎn)換失敗 不是數(shù)據(jù)庫(kù)的異常
而且根本就不是異常 所以 catch(…)無(wú)法抓住
解決方案
在可能為空的地方 利用
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 = “”;
就可以檢測(cè)NULL值了
posted on 2009-08-21 16:01
李佳 閱讀(2423)
評(píng)論(1) 編輯 收藏 引用 所屬分類(lèi):
WIN32 應(yīng)用開(kāi)發(fā)