這樣
1 _variant_t TheValue;
2 TheValue=https://bbs.csdn.net/topics/m_Adoconn.m_pRecordset->GetCollect("gw");
3 if(TheValue.vt!=VT_NULL)
4 gw=TheValue.bstrVal;
5 m_listLCdata.SetItemText(0,7,gw);
有人說如果gw欄位值為空,就判斷,可是當欄位值為空的時候,GetCollect("gw")陳述句直接就報錯,崩潰了,根本就運行不到if陳述句。改怎么修改呢,求解答,謝謝!
uj5u.com熱心網友回復:
TheValue=https://bbs.csdn.net/topics/m_Adoconn.m_pRecordset->GetCollect(_bstr_t("gw"));uj5u.com熱心網友回復:
讀取游標的適合要先判斷m_pRecordset 是否為eof,然后才能讀取m_pRecordset-> MoveFirst();
while(!m_pRecordset-> adoEOF)
{
//your code
。。。定義
_variant_t TheValue;
TheValue=https://bbs.csdn.net/topics/m_Adoconn.m_pRecordset->GetCollect("gw");
if(TheValue.vt!=VT_NULL)
gw=TheValue.bstrVal;
m_listLCdata.SetItemText(0,7,gw);
m_pRecordset-> MoveNext();
}
uj5u.com熱心網友回復:
m_pRecordset 這個指標也需要判空uj5u.com熱心網友回復:
這個可能最大
uj5u.com熱心網友回復:
直接在sql陳述句中,把空的篩選掉,空的,你取值沒有意義啊。uj5u.com熱心網友回復:
2L, 正解,每次從記錄讀取資料前都必須判斷記錄是否已經到了最后(也就是空)uj5u.com熱心網友回復:
我給的五條陳述句已經是while回圈里的,已經判斷是有資料才進入回圈取資料的。所以不是這個地方的問題
uj5u.com熱心網友回復:
讀取游標的適合要先判斷m_pRecordset 是否為eof,然后才能讀取
m_pRecordset-> MoveFirst();
while(!m_pRecordset-> adoEOF)
{
//your code
。。。定義
_variant_t TheValue;
TheValue=https://bbs.csdn.net/topics/m_Adoconn.m_pRecordset->GetCollect("gw");
if(TheValue.vt!=VT_NULL)
gw=TheValue.bstrVal;
m_listLCdata.SetItemText(0,7,gw);
m_pRecordset-> MoveNext();
}
我的原始程式就是先判斷非空的:
m_pRecordset=m_Adoconn.GetRecordSet((_bstr_t)sql);
while(m_pRecordset->adoEOF==0)
{
//將記錄集欄位中的記錄添加到List Control控制元件中
Cstring Conid,lc;
_variant_t TheValue;
TheValue=https://bbs.csdn.net/topics/m_Adoconn.m_pRecordset->GetCollect("gw");
if(TheValue.vt!=VT_NULL)
gw=TheValue.bstrVal;
m_listLCdata.SetItemText(i,7,gw);
}
當然是先判斷非空再進入回圈取數啦,我的問題是進入取資料時,如果某行某一欄位比如gw為空,TheValue=https://bbs.csdn.net/topics/m_Adoconn.m_pRecordset->GetCollect("gw");此句直接報錯,根本無法執行下句的if判斷。明白?
uj5u.com熱心網友回復:
崩潰應該是拋出了例外吧,嘗試處理_com_error 例外uj5u.com熱心網友回復:
你在while里面判斷的陳述句和你獲取資料的陳述句中記錄集使用的不是同一個,還有你MoveNext()時使用的是那個記錄集,最好統一while(m_pRecordset->adoEOF==0)
TheValue=https://bbs.csdn.net/topics/m_Adoconn.m_pRecordset->GetCollect("gw");
還有在GetCollect("gw")時最好這樣GetCollect(_variant_t("gw"))
uj5u.com熱心網友回復:
報什么錯你又不說,錯誤發生后你斷點進去看總會發現些什么的啊你現在啥也不說就只說有錯,讓人幫你“猜“,然后你自己再瞎蒙
根本就沒了解到錯誤的本質在哪,下次還會發生同樣的錯誤而你肯定忘記了這次的教訓
uj5u.com熱心網友回復:
直接在sql陳述句中,把空的篩選掉,空的,你取值沒有意義啊。
廢話,人家說欄位空的
uj5u.com熱心網友回復:
這個我也碰到了,主要是因為,你選的sql資料是datatime資料,當資料為空的時候,你這樣寫就會出錯。uj5u.com熱心網友回復:
_variant_t TheValue;TheValue=https://bbs.csdn.net/topics/m_Adoconn.m_pRecordset->GetCollect("gw").GetVARIANT();
if(TheValue.vt!=VT_NULL)
gw=TheValue.bstrVal;
m_listLCdata.SetItemText(0,7,gw);
這樣就可以了,.GetVARIANT();
uj5u.com熱心網友回復:
關注中! 我也出現了這樣的問題uj5u.com熱心網友回復:
樓主,我嘗試了下,_variant_t TheValue;
TheValue=https://bbs.csdn.net/topics/m_Adoconn.m_pRecordset->GetCollect((_variant_t)"gw"); ---增加了 (_variant_t)
if(TheValue.vt!=VT_NULL)
gw=(wchar_t*)(_bstr_t)TheValue; ----這里使用TheValue.bstrVal我這邊會報錯
m_listLCdata.SetItemText(0,7,gw);
然后我測驗了下,記錄里的資料為空時不會報錯
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/150716.html
標籤:數據庫
上一篇:找大神輔導一個網路掃描器的實作
