inline _variant_t Recordset15::GetCollect(const _variant_t &Index){
VARIANT _result;
VariantInit (& _result);
HREULT _hr=get_Collect(Index, &_result);
if(FAILED(_hr)) _con_issue_errorex(_hr,this,__uuidof(this));
return _variant_t (_result, flase);
}
呼叫該函式的陳述句為:
m_listCtrl.SetItemText(0,0,(LPCTSTR)(_bstr_t)ado.m_Recordset->GetCollect(_variant_t ((long)0)));
作用是將記錄集的第一列資料去處放在m_listCtrl控制元件的第一行第一列的位置。
該程式第一次運行良好。第二次取相同的資料會發生錯誤,錯誤資訊:0x045f637b處有未經處理的例外:0xc0000005:讀取位置0xfeeeff4e時發生例外
uj5u.com熱心網友回復:
從你的描述及你的代碼上看,似乎是你將當前記錄移到到了BOF或者EOF的位置了uj5u.com熱心網友回復:
是的,whie(!ado.m_Recordset->adoEOF){
m_listCtrl.SetItemText(0,0,(LPCTSTR)(_bstr_t)ado.m_Recordset->GetCollect(_variant_t ((long)0)));
m_listCtrl.SetItemText(0,1,(LPCTSTR)(_bstr_t)ado.m_Recordset->GetCollect(_variant_t ((long)1)));
}ado.close;
按一下button鍵取玩資料。下次再按button鍵就出錯了。
uj5u.com熱心網友回復:
你要實作的功能是什么,每次進while前把位置置到第一行試下uj5u.com熱心網友回復:
沒有用,功能就是讀SQL中的資料。病顯示遲到listcrl控制元件中
uj5u.com熱心網友回復:
看下面的代碼。有個while回圈。回圈結束后自然到adoEOF的位置了。下一次按button控制元件就會出錯
uj5u.com熱心網友回復:
whie(!ado.m_Recordset->adoEOF){
m_listCtrl.SetItemText(0,0,(LPCTSTR)(_bstr_t)ado.m_Recordset->GetCollect(_variant_t ((long)0)));
m_listCtrl.SetItemText(0,1,(LPCTSTR)(_bstr_t)ado.m_Recordset->GetCollect(_variant_t ((long)1)));
//此處,沒有移動當前記錄?會死回圈
}ado.close;
第一次按鍵,后,紅色代碼將ADO物件關閉,為什么要close?
第二次按鍵,操作的是一個沒有已經失效的記錄集
uj5u.com熱心網友回復:
移動了。ado.m_Recordset->MoveNext();
i++;
后面將ado.close()注釋了,但是也沒有用。因為我每次按button的時候回開啟一個執行緒,都是連接,輸出后關閉連接。
uj5u.com熱心網友回復:
總結一下,一般出現0xc0000005:讀取位置***時發生例外是因為記憶體泄漏或者指標的問題。我這個程式是因為我在button的點擊事件中創建了執行緒。然后在資料顯示出來的時候再次點擊了button,然而此時執行緒并沒有結束。雖然寫了執行緒結束的代碼,但是再次點擊了button的時候,沒有運行到執行緒結束的位置。造成錯誤。uj5u.com熱心網友回復:
Multiple Threads in the User Interface http://msdn.microsoft.com/zh-cn/library/ms810439.aspxuj5u.com熱心網友回復:
讀取錯誤一般是指標獲取錯誤或者是操作執行沖突了uj5u.com熱心網友回復:
如果關閉就要重新打開,建議把代碼貼出來,這樣的問題打斷點很容易解決的uj5u.com熱心網友回復:
點擊了button跑一次執行緒,完了就關閉執行緒。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/70012.html
標籤:數據庫
上一篇:(基于opencv的車牌檢測)vc++專案配置中選擇無公共語言可以運行 成功,選擇有公共語言..clr運行時出現例外說是觸發一個斷點,堆已損壞!求大神指導下。。
下一篇:插入資料到資料庫,卻沒有資料
