解决方案 »

  1.   

    res.GetFieldName(i)可以提到大循环外面来,保存成一个数组,GetBuffer()不需要调用,CString可以自己转换成LPCTSTR。
      

  2.   

    那就是AddXmlChildElement的速度问题了。
      

  3.   

    注释掉
    res.GetCollect(i,strFieldValue);
    m_outXml.AddXmlChildElement(pRow,res.GetFieldName(i).GetBuffer(),strFieldValue.GetBuffer());换成
    m_outXml.AddXmlChildElement(pRow,"test","test");速度就1s内了
      

  4.   

    记得ADO是有个接口是获取一行记录以数组的形式返回的,你找找试试看。
      

  5.   

    就是Fields? 然后Fields[i]->GetName()/GetValue()?
      

  6.   

    用sql for xml PATH可以将所有记录变成一个记录  但是不知道怎么获取  用常规获取的是BLOB...
      

  7.   

    lz将记录集使用
    rs.save( 文件名,xml格式) 不就得了,干嘛自己存啊?另外这个代码写的好特别while (1)
                    {
                        if (res.IsEOF())
                        {
                            break;
                        }
    .....
                    }干嘛不写成:
    while(!rse.IsEof)
    {
    .....
    }
      

  8.   

    需要将该数据组装发出去啊,难道存在文件里,再去读?还有刚才测试存在文件中,里面的数据跟我在sql客户端查的不一样啊,难道还要转?
      

  9.   

    需要将该数据组装发出去啊,难道存在文件里,再去读?还有刚才测试存在文件中,里面的数据跟我在sql客户端查的不一样啊,难道还要转?可以save到流对象,到客户端使用open打开流就可以
    xml是灵活的,rs有自己xml标签10w数据你即使什么都不做传递到客户也是快不了,你可以自己算一下数据量是多少,再,保存为xml比保存为2进制数据节省数据起码要增加一倍
      

  10.   

    保存为xml比保存为2进制数据节省数据起码要增加一倍
    这个说错了保存为xml比保存为2进制,数据量起码要增加一倍
      

  11.   

    人家c#数据库访问10多W数据组装成xml只需要0.2秒,情何以堪...而c++需要2秒多...应该是ado慢了
      

  12.   

    人家c#数据库访问10多W数据组装成xml只需要0.2秒,情何以堪...而c++需要2秒多...应该是ado慢了不太可能吧,
      

  13.   

    人家c#数据库访问10多W数据组装成xml只需要0.2秒,情何以堪...而c++需要2秒多...应该是ado慢了不太可能吧,呵呵 亲眼见证