请问各位大虾,如何将mysql中select出来的几十万行资料数据分段从服务端发送到客户端?我现在只能将整个的数据都发过去,数据太长,客户端不好用,但是一旦限制send函数中的长度,查询出来的数据就会缺损,还出现个别乱码,咋整?将数据分段是考虑到结构还是什么?最好能给个实例,谢谢!

解决方案 »

  1.   

    分段发送,不可以吗?在MSSQL2008可以 insert top (1000) 分段插入。考虑换版本!在原MySQL中将数据表处理为分段执行。try it
      

  2.   


    你可以一次只查出来1000条记录,
    select * from table1 limit 1000;
    select * from table1 limit 1001,2000;
    这样,服务器一次只传输1000条记录的数据到客户端。
      

  3.   

    to 7#:
        我想用C语言或者C++实现,我觉得应该可以吧?只是不知道具体怎么做···很痛苦
      

  4.   

    可以考虑先返回记录的总条数,然后,在没有达到这个总记录数的情况下,利用limit每次获取1000条记录。
      

  5.   

    首先,是数据库,肯定是一次把所有请求的记录集合发送回请求方。 当然你可以自己写个C的程序在中间起代理作用。 客户端的SQL请求发送到这个C代理程序上,C再把SQL语句提交到数据库端,数据库将所有记录一次性返回给请求的C代理程序,然后你可以用你的C代理程序实现你的要求。
      

  6.   


    大哥,这个代理程序我已经快实现了,只是不知道如何实现分段发送数据的问题···所以才很着急···
         if(clifd < 0)
     {
    printf("ccccc\n");
    continue;
     }  
     else 
         { int i;  
                  for(i=0;i++; )
                 {    if(buf[i]!='\n')
           { 
    send(clifd,buf,500,0);
    }
         else   {   break; }
    }

          } 我将要发送的数据组成字符串了,buf 就是我要发送的字符串,我希望将buf分段,在碰到\n就停止,然后返回发送下一段,但是实现不了···请问怎么改···谢谢!!!
      

  7.   


    在你的代码里做个循环,拼出SQL语句,应该很简单呀。