请问如何将数据库指针移动到指定记录的位置上?
dlg->m_title.GetWindowText(continue_keyword);//得到需要找到的记录
continue_keyword2=continue_keyword;//数据库类型
if(continue_keyword!="")// 当该记录不为空
{
m_pRecordset_if->MoveLast();//从数据库末尾开始查询
while(m_pRecordset_if->GetCollect("keywords")!=continue_keyword2 && !m_pRecordset_if->FirstOfFile)
{
m_pRecordset_if->MovePrevious();//一条一条查
}
if(!m_pRecordset_if->FirstOfFile)
{
load_keyword=m_pRecordset_if->GetCollect("keywords");
load_count=5;
_load_keyword=load_keyword.bstrVal;
//::MessageBox(NULL, _load_keyword, NULL, MB_OK);
return _load_keyword;
}
}
我想把数据库指针指向指定的记录,目前采取这种方法实在是太慢了,请问能否使用sql 语句来找到指定记录的位置?
[解决办法]
为什么要一条一条比较呢?
用SQL查询不是很简单吗
[解决办法]
好像没有特别好的办法了,除此之外!
BOOL CADORecordset::Find(LPCTSTR lpFind, int nSearchDirection){ m_strFind = lpFind; m_nSearchDirection = nSearchDirection; ASSERT(!m_strFind.IsEmpty()); if(m_nSearchDirection == searchForward) { m_pRecordset->Find(_bstr_t(m_strFind), 0, adSearchForward, ""); if(!IsEof()) { m_varBookFind = m_pRecordset->Bookmark; return TRUE; } } else if(m_nSearchDirection == searchBackward) { m_pRecordset->Find(_bstr_t(m_strFind), 0, adSearchBackward, ""); if(!IsBof()) { m_varBookFind = m_pRecordset->Bookmark; return TRUE; } } else { TRACE("Unknown parameter. %d", nSearchDirection); m_nSearchDirection = searchForward; } return FALSE;}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;}