想通过ADO读取.数据库(ACCESS)中数据.因为数据量很大.想分段读取如何做到??
通过SQL语句可以实现吗?即:
while(!IsEndOfDB()){
    读取第n部分();
    处理这部分数据();
    
    n++;
}

解决方案 »

  1.   

    在while查询条件中再加个条件来实现中止不行吗?
    while(!IsEndOfDB() && !bStop){
        读取第n部分();
        处理这部分数据();
        
        n++;
    }
      

  2.   

    look this-->最花时间的是这句--    
     .......if(!pRs->Open((LPCTSTR)strQry))........需要等待很长时间,而且不能中断。。我的想法是能否将一次性大量查询,分成多个小量数据查询?
    ========================================================
    CADODatabase* pAdoDb = new CADODatabase();
    CString strConnection = "";strConnection = _T("Provider=MSDASQL;"
                      "PersistSecurityInfo=False;Trusted_Connection=Yes
    Data Source=Access Sql Server;catalog=sampledb");if(pAdoDb->Open((LPCTSTR)strConnection))
    {
        CString strQry = _T("");
        int numRecords;    strQry.Format(_T("sp_StoreClientFields_ps '%s', %d"), 
                      (LPCTSTR)strParam1, nParam2);    CADORecordset* pRs = new CADORecordset(pAdoDb);    if(!pRs->Open((LPCTSTR)strQry))
        {
    delete pRs;
    delete pAdoDb;
    return FALSE
        }    numRecords = pRs->GetRecordCount();
        while(!pRs->IsEof())
        {
          CString strVal = _T("");
          int nVal = 0;
          //Get Numeric Field Value
          pRs->GetFieldValue("NumField1", nVal)      //Get String Field Data
          pRs->GetFieldValue("StrField..", strVal)
            DoSomething(nVal, strVal);        pRs->MoveNext();
        }
        pRs->Close();
    }
    else
      return FALSE;
      

  3.   

    希望对你有帮助
    http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=190778
      

  4.   

    不知道 分段返回记录行不行
    pAdoDb->put_MaxRecords( m_lNumRows )