在分布式系统中,,,客户端从中间层com查询上千条记录,,服务器和客户端不同一台 机器,com怎样返回这些记录啊?
 
 返回大数组,,,还是做成非常长的字符串,,还是其他啊?? 

解决方案 »

  1.   

    返回 ADO Recordset对象。
      

  2.   

    返回ado的记录集,方法可参考如下:STDMETHODIMP CMyInterface::GetRS(IDispatch **pRs)
    {
    AFX_MANAGE_STATE(AfxGetStaticModuleState()) IObjectContext *pCtx = NULL;
    HRESULT hr; hr = GetObjectContext(&pCtx);
    if (FAILED(hr))
    {
    if (hr != CONTEXT_E_NOCONTEXT)
    {
    return hr;
    }
    } _ConnectionPtr pConn;
    _RecordsetPtr pRS; try
    {
    _bstr_t strSQL; strSQL = "SELECT * FROM tablename"; hr = pConn.CreateInstance(__uuidof(Connection));
    if (FAILED(hr))
    {
    _com_raise_error(hr);
    } hr = pConn->Open(VS_CONNECT, "sa", "", -1);    //VS_CONNECT是在StdAfx.h中定义的数据源名称
    if (FAILED(hr))
    {
    _com_raise_error(hr);
    } hr = pRS.CreateInstance(__uuidof(Recordset));
    if (FAILED(hr))
    {
    _com_raise_error(hr);
    } pRS->CursorLocation = adUseClient;
    hr = pRS->Open(strSQL, pConn->ConnectionString, adOpenStatic, adLockOptimistic, adCmdText);
    if (FAILED(hr))
    {
    _com_raise_error(hr);
    }
    }
    catch (_com_error &e)
    {
    if (pCtx != NULL)
    {
    pCtx->SetAbort();
    }
    return e.Error();
    } pRS->putref_ActiveConnection(NULL);   
    *pRs = (IDispatch *)pRS.Detach();      if (pCtx != NULL)
    {
    pCtx->SetComplete();
    } return S_OK;
    }
      

  3.   

    在vc里,,,如何处理xml包阿?
      

  4.   

    使用recordset就OK何必要用xml呢
      

  5.   

    强烈支持 Stepdev(海纳百川 有容乃大)。
    请问 Stepdev(海纳百川 有容乃大),如果查询到的数据有上万条,如何显示这么多条的数据呢?如果一次性插入所有的记录到listctrl中,肯定会让用户长时间的等待。
      

  6.   

    分页显示,或者取得部分数据显示,是一个好办法。问题:如果将数据插入到CListCtrl中,用户拖动滚动条时,同时显示相应位置的数据,让用户感觉所有的数据已经放在CListCtrl中了,好像有点难度,谁有好的办法解决数据显示问题?
      

  7.   

    http://expert.csdn.net/Expert/topic/1582/1582797.xml?temp=3.159732E-02