请问GetRecordSet建立的记录集中怎么使用Find
请教GetRecordSet建立的记录集中如何使用Find?
------解决方案--------------------
加异常捕获看是什么错误
- C/C++ code
class ADOConn { public: ADOConn(void); _ConnectionPtr m_pConnection; _RecordsetPtr meaningRecordset; public: ~ADOConn(void); void OnInitADOConn(); BOOL ExecuteSQL(_bstr_t bstrSQL); void ExitConnect(); public: _RecordsetPtr& GetRecordSet(_bstr_t bstrSQL); }; void ADOConn::OnInitADOConn() { CoInitialize(NULL); try { m_pConnection.CreateInstance(__uuidof(Connection)); _bstr_t strConnect = "Provider=SQLOLEDB; Server=.;Database=pkword;Integrated Security=SSPI;"; m_pConnection->Open(strConnect,"","",adModeUnknown); } catch(_com_error e) { AfxMessageBox(e.Description()); } AdoConnok=true; } void OpenWordRecordset() { _bstr_t strsql="SELECT word,content FROM meaninglib"; pConn->meaningRecordset=pConn->GetRecordSet(strsql); //目的是内存中建立词库集,避免经常查询数据库, //这一步是成功的,可以从pConn->meaningRecordset读出数据到数组中。 } int Seekwords(CString &pPhrazes){ //需要频繁搜索数据库 //希望从meaningRecordset中查询,而不是从sever 2005中查询,但不成功 _bstr_t strsql="word='"+pPhrazes+"'"; //pConn->meaningRecordset->MoveFirst();//有这句会出错,所以去掉,但还是出错 int wordnum=pConn->meaningRecordset->Find(strsql,0,adSearchForward,""); //[color=#FF0000]出[/color]错 return -1; //词库中未发现 } //出错中断后跳到这里:e:\chigramedit\x64\msado15.tli inline HRESULT Recordset15::Find ( _bstr_t Criteria, ADO_LONGPTR SkipRecords, enum SearchDirectionEnum SearchDirection, const _variant_t & Start ) { HRESULT _hr = raw_Find(Criteria, SkipRecords, SearchDirection, Start); if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this)); return _hr;//监视 _hr -2146824584 HRESULT }
------解决方案--------------------
加异常捕获看是什么错误
- C/C++ code
try { //你的ADO代码 } catch (_com_error& e) { AfxMessageBox(e.Description()); }